home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / networking / mail / mh / updates / MH.6.7.2 < prev    next >
Encoding:
Text File  |  1992-01-29  |  108.9 KB  |  4,099 lines

  1. *** ../mh-6.7-dist/Patchlevel    Wed Jan 29 16:59:52 1992
  2. --- Patchlevel    Wed Jan 22 13:37:46 1992
  3. ***************
  4. *** 1 ****
  5. ! MH.6.7 patch.1a
  6. --- 1 ----
  7. ! MH.6.7 patch.2
  8. *** ../mh-6.7-dist/conf/mh-gen.8    Wed Jan 29 17:00:19 1992
  9. --- conf/mh-gen.8    Thu Jan 30 08:41:44 1992
  10. ***************
  11. *** 1,2 ****
  12. ! .\" @(#)$Id: mh-gen.8,v 2.54 91/01/24 08:27:50 mh Exp $
  13.   .\" uneven inter-word spacing (nroff line adjusting) hampers readability
  14. --- 1,2 ----
  15. ! .\" @(#)$Id: mh-gen.8,v 2.55 1992/01/30 16:41:35 jromine Exp $
  16.   .\" uneven inter-word spacing (nroff line adjusting) hampers readability
  17. ***************
  18. *** 325,326 ****
  19. --- 325,340 ----
  20.   .ti -.5i
  21. + ATTVIBUG
  22. + .br
  23. + This option causes
  24. + \fIMH\fP to return to the \*(lqWhat now?\*(rq
  25. + prompt if your initial editor is \fBvi\fP
  26. + and it exits with non-zero status.
  27. + Use on Sun OS 4.1 and other systems where the
  28. + \fB/usr/ucb/vi\fP editor was changed to
  29. + exit with its status equal to the number of pseudo-\*(lqerrors\*(rq
  30. + encountered during the edit.  This causes a problem for programs that
  31. + test the exit status of their editor and abort if the status is non-zero.
  32. + (This includes \fIMH\fP and programs like \fB/usr/etc/vipw\fP).
  33. + .ti -.5i
  34.   ATZ
  35. ***************
  36. *** 585,598 ****
  37.   .ti -.5i
  38. ! SUNVIBUG
  39.   .br
  40. ! This option causes
  41. ! \fIMH\fP to return to the \*(lqWhat now?\*(rq
  42. ! prompt if your initial editor is \fBvi\fP
  43. ! and it exits with non-zero status.
  44. ! Use on Sun OS 4.1 and other systems where the
  45. ! \fB/usr/ucb/vi\fP editor was changed to
  46. ! exit with its status equal to the number of pseudo-\*(lqerrors\*(rq
  47. ! encountered during the edit.  This causes a problem for programs that
  48. ! test the exit status of their editor and abort if the status is non-zero.
  49. ! (This includes \fIMH\fP and programs like \fB/usr/etc/vipw\fP).
  50.   
  51. --- 599,606 ----
  52.   .ti -.5i
  53. ! SUN41
  54.   .br
  55. ! Use on Sun OS 4.1 (and later?) systems.  You also want
  56. ! \*(lqoptions SUN40\*(rq,
  57. ! \*(lqoptions BSD42\*(rq, \*(lqoptions BSD43\*(rq, and
  58. ! \*(lqoptions TYPESIG=void\*(rq.
  59.   
  60. ***************
  61. *** 624,626 ****
  62.   Set TYPESIG='void' on systems which use this type
  63. ! (e.g., SYSTEM 5 V3.0 and later or Sun OS 4.0).
  64.   
  65. --- 632,634 ----
  66.   Set TYPESIG='void' on systems which use this type
  67. ! (e.g., SYSTEM 5 V3.0 and later or Sun OS 4.0 and later).
  68.   
  69. *** ../mh-6.7-dist/conf/mhconfig.c    Wed Jan 29 17:00:20 1992
  70. --- conf/mhconfig.c    Mon Jan 27 09:34:35 1992
  71. ***************
  72. *** 1,7 ****
  73.   /* mhconfig.c - configure MH */
  74.   /* cc [-DSYS5] mhconfig.c -o mhconfig */
  75.   #ifndef    lint
  76. ! static char ident[] = "@(#)$Id: mhconfig.c,v 2.30 91/01/25 14:48:44 mh Exp $";
  77.   #endif    lint
  78.   
  79.   #include <ctype.h>
  80. --- 1,7 ----
  81.   /* mhconfig.c - configure MH */
  82.   /* cc [-DSYS5] mhconfig.c -o mhconfig */
  83.   #ifndef    lint
  84. ! static char ident[] = "@(#)$Id: mhconfig.c,v 2.31 1992/01/27 17:34:29 jromine Exp $";
  85.   #endif    lint
  86.   
  87.   #include <ctype.h>
  88. ***************
  89. *** 32,37 ****
  90. --- 32,38 ----
  91.   #define    MHRELEASE    "6.7"        /* for version: "Maj.min.pat" */
  92.   #define    MHCENTERFOOT    "MH.6.7"    /* for nroff page footers */
  93.   #define    MHLEFTFOOT    "[mh.6]"    /* [mh.6]    MH.6.6   page# */
  94. + #define    MHSLIBVER    "1.1"        /* SunOS4 shared library version */
  95.   
  96.   #define    NOTOK    (-1)
  97.   
  98. ***************
  99. *** 53,59 ****
  100.   static int   makeP = 1;
  101.   
  102.   static char *myname = "mhconfig";
  103.   static char *myopts = NULL;
  104.   
  105.   static char *binpath = "/usr/local";
  106. --- 54,60 ----
  107.   static int   makeP = 1;
  108.   
  109.   static char *myname = "mhconfig";
  110. ! static char *config = NULL;
  111.   static char *myopts = NULL;
  112.   
  113.   static char *binpath = "/usr/local";
  114. ***************
  115. *** 276,281 ****
  116. --- 277,283 ----
  117.       do_alldoc(fp);    /* hack up doc/config.sed */
  118.       }
  119.   
  120. +     fprintf (fp, "s%%@(MHCONFIGFILE)%%%s%%g\n", SVAL(config));
  121.       fprintf (fp, "s%%@(MHWARNING)%%%s%%g\n", WARNING);
  122.       fprintf (fp, "s%%@(MHRELEASE)%%%s%%g\n", MHRELEASE);
  123.       fprintf (fp, "s%%@(MHCENTERFOOT)%%%s%%g\n", MHCENTERFOOT);
  124. ***************
  125. *** 376,381 ****
  126. --- 378,384 ----
  127.       fprintf (fp, "/^@BEGIN: SHAREDLIB$/d\n/^@END: SHAREDLIB$/d\n");
  128.       fprintf (fp, "/^@BEGIN: STDLIB$/,/^@END: STDLIB$/d\n");
  129.       fprintf (fp, "s%%@(SLIBDIR)%%%s%%g\n",slibdir);
  130. +     fprintf (fp, "s%%@(SLIBVER)%%%s%%g\n", MHSLIBVER);
  131.       if (strcmp (sharedlib, "secure") == 0)
  132.           fprintf (fp, "s%%@(SLDFLAG)%%-L%s%%g\n",slibdir);
  133.       else
  134. ***************
  135. *** 529,535 ****
  136.       char   *ap,
  137.              *cp,
  138.              *dp,
  139. -            *config,
  140.               buffer[BUFSIZ];
  141.       struct bind *bp;
  142.       FILE * fp;
  143. --- 532,537 ----
  144. *** ../mh-6.7-dist/config/version.sh    Fri Dec 14 13:24:13 1990
  145. --- config/version.sh    Thu Jan 30 14:20:46 1992
  146. ***************
  147. *** 1,3 ****
  148.   : run this script through /bin/sh
  149. ! : '@(#)$Id: version.sh,v 1.6 90/04/05 21:25:14 sources Exp $'
  150.   case $# in
  151. --- 1,3 ----
  152.   : run this script through /bin/sh
  153. ! : '@(#)$Id: version.sh,v 1.9 1992/01/30 22:20:41 jromine Exp $'
  154.   case $# in
  155. ***************
  156. *** 43,47 ****
  157.   BEGIN    { split ("'"${1}"'", ver, ".");\
  158. !       major = ver[1]; minor = ver[2]; patch = ver[3]}\
  159. ! NR == 1 { local = $(NF) }\
  160. ! NR == 2 { patch = $(NF) }\
  161.   END    { local++;\
  162. --- 43,47 ----
  163.   BEGIN    { split ("'"${1}"'", ver, ".");\
  164. !       major = ver[1]; minor = ver[2]; patch = ver[3]} \
  165. ! NR == 1 { local = $(NF) } ;\
  166. ! NR == 2 { patch = $(NF) } ;\
  167.   END    { local++;\
  168. ***************
  169. *** 48,50 ****
  170.         if (patch > 0) {\
  171. !       printf "char *version = \"MH %s.%s.%s #%d[UCI] ", \
  172.           major, minor, patch, local > "version.c"; \
  173. --- 48,50 ----
  174.         if (patch > 0) {\
  175. !       printf "char *version = \"@(#)MH %s.%s.%s #%d[UCI] ", \
  176.           major, minor, patch, local > "version.c"; \
  177. ***************
  178. *** 54,56 ****
  179.       } else {\
  180. !       printf "char *version = \"MH %s.%s #%d[UCI] ", \
  181.           major, minor, local > "version.c"; \
  182. --- 54,56 ----
  183.       } else {\
  184. !       printf "char *version = \"@(#)MH %s.%s #%d[UCI] ", \
  185.           major, minor, local > "version.c"; \
  186. *** ../mh-6.7-dist/h/fmtcompile.h    Wed Jan 29 17:00:20 1992
  187. --- h/fmtcompile.h    Thu Jan 23 15:16:10 1992
  188. ***************
  189. *** 1,4 ****
  190. ! /* @(#)$Id: fmtcompile.h,v 1.5 90/12/27 17:04:12 mh Exp $ */
  191.   
  192.   /* Format Types */
  193.   /* -------------*/
  194. --- 1,4 ----
  195. ! /* @(#)$Id: fmtcompile.h,v 1.8 1992/01/23 23:16:05 jromine Exp $ */
  196.   
  197.   /* Format Types */
  198.   /* -------------*/
  199. ***************
  200. *** 19,103 ****
  201.   /* types that modify the "str" or "value" registers */
  202.   #define FT_LS_COMP    12    /* set "str" to component text */
  203.   #define FT_LS_LIT    13    /* set "str" to literal text */
  204. ! #define FT_LS_TRIM    14    /* trim trailing white space from "str" */
  205. ! #define FT_LV_COMP    15    /* set "value" to comp (as dec. num) */
  206. ! #define FT_LV_COMPFLAG    16    /* set "value" to comp flag word */
  207. ! #define FT_LV_LIT    17    /* set "value" to literal num */
  208. ! #define FT_LV_DAT    18    /* set "value" to dat[n] */
  209. ! #define FT_LV_STRLEN    19    /* set "value" to length of "str" */
  210. ! #define FT_LV_PLUS_L    20    /* set "value" += literal */
  211. ! #define FT_LV_MINUS_L    21    /* set "value" -= literal */
  212. ! #define FT_LV_DIVIDE_L    22    /* set "value" to value / literal */
  213. ! #define FT_LV_CHAR_LEFT    23    /* set "value" to char left in output */
  214.   
  215. ! #define FT_LS_MONTH    24    /* set "str" to tws month */
  216. ! #define FT_LS_LMONTH    25    /* set "str" to long tws month */
  217. ! #define FT_LS_ZONE    26    /* set "str" to tws timezone */
  218. ! #define FT_LS_DAY    27    /* set "str" to tws weekday */
  219. ! #define FT_LS_WEEKDAY    28    /* set "str" to long tws weekday */
  220. ! #define FT_LS_822DATE    29    /* set "str" to 822 date str */
  221. ! #define FT_LS_PRETTY    30    /* set "str" to pretty (?) date str */
  222. ! #define FT_LV_SEC    31    /* set "value" to tws second */
  223. ! #define FT_LV_MIN    32    /* set "value" to tws minute */
  224. ! #define FT_LV_HOUR    33    /* set "value" to tws hour */
  225. ! #define FT_LV_MDAY    34    /* set "value" to tws day of month */
  226. ! #define FT_LV_MON    35    /* set "value" to tws month */
  227. ! #define FT_LV_YEAR    36    /* set "value" to tws year */
  228. ! #define FT_LV_YDAY    37    /* set "value" to tws day of year */
  229. ! #define FT_LV_WDAY    38    /* set "value" to tws weekday */
  230. ! #define FT_LV_ZONE    39    /* set "value" to tws timezone */
  231. ! #define FT_LV_CLOCK    40    /* set "value" to tws clock */
  232. ! #define FT_LV_RCLOCK    41    /* set "value" to now - tws clock */
  233. ! #define FT_LV_DAYF    42    /* set "value" to tws day flag */
  234. ! #define FT_LV_DST    43    /* set "value" to tws daylight savings flag */
  235. ! #define FT_LV_ZONEF    44    /* set "value" to tws timezone flag */
  236.   
  237. ! #define FT_LS_PERS    45    /* set "str" to person part of addr */
  238. ! #define FT_LS_MBOX    46    /* set "str" to mbox part of addr */
  239. ! #define FT_LS_HOST    47    /* set "str" to host part of addr */
  240. ! #define FT_LS_PATH    48    /* set "str" to route part of addr */
  241. ! #define FT_LS_GNAME    49    /* set "str" to group part of addr */
  242. ! #define FT_LS_NOTE    50    /* set "str" to comment part of addr */
  243. ! #define    FT_LS_ADDR    51    /* set "str" to mbox@host */
  244. ! #define FT_LS_822ADDR    52    /* set "str" to 822 format addr */
  245. ! #define FT_LS_FRIENDLY    53    /* set "str" to "friendly" format addr */
  246. ! #define FT_LV_HOSTTYPE    54    /* set "value" to addr host type */
  247. ! #define FT_LV_INGRPF    55    /* set "value" to addr in-group flag */
  248. ! #define FT_LV_NOHOSTF    56    /* set "value" to addr no-host flag */
  249.   
  250.   /* Date Coercion */
  251. ! #define FT_LOCALDATE    57    /* Coerce date to local timezone */
  252. ! #define FT_GMTDATE    58    /* Coerce date to gmt */
  253.   
  254.   /* pre-format processing */
  255. ! #define FT_PARSEDATE    59    /* parse comp into a date (tws) struct */
  256. ! #define FT_PARSEADDR    60    /* parse comp into a mailaddr struct */
  257. ! #define FT_FORMATADDR    61    /* let external routine format addr */
  258. ! #define FT_MYMBOX    62    /* do "mymbox" test on comp */
  259.   
  260.   /* misc. */
  261.   #ifdef    VAN
  262. ! #define FT_ADDTOSEQ    63    /* add current msg to a sequence */
  263.   #endif
  264.   
  265.   /* conditionals & control flow (must be last) */
  266. ! #define FT_SAVESTR    64    /* save current str reg */
  267. ! #define FT_DONE        65    /* stop formatting */
  268. ! #define FT_NOP        66    /* nop */
  269. ! #define FT_GOTO        67    /* (relative) goto */
  270. ! #define FT_IF_S_NULL    68    /* test if "str" null */
  271. ! #define FT_IF_S        69    /* test if "str" non-null */
  272. ! #define FT_IF_V_EQ    70    /* test if "value" = literal */
  273. ! #define FT_IF_V_NE    71    /* test if "value" != literal */
  274. ! #define FT_IF_V_GT    72    /* test if "value" > literal */
  275. ! #define FT_IF_MATCH    73    /* test if "str" contains literal */
  276. ! #define FT_IF_AMATCH    74    /* test if "str" starts with literal */
  277. ! #define FT_S_NULL    75    /* V = 1 if "str" null */
  278. ! #define FT_S_NONNULL    76    /* V = 1 if "str" non-null */
  279. ! #define FT_V_EQ        77    /* V = 1 if "value" = literal */
  280. ! #define FT_V_NE        78    /* V = 1 if "value" != literal */
  281. ! #define FT_V_GT        79    /* V = 1 if "value" > literal */
  282. ! #define FT_V_MATCH    80    /* V = 1 if "str" contains literal */
  283. ! #define FT_V_AMATCH    81    /* V = 1 if "str" starts with literal */
  284.   
  285.   #define IF_FUNCS FT_S_NULL    /* start of "if" functions */
  286. --- 19,105 ----
  287.   /* types that modify the "str" or "value" registers */
  288.   #define FT_LS_COMP    12    /* set "str" to component text */
  289.   #define FT_LS_LIT    13    /* set "str" to literal text */
  290. ! #define FT_LS_GETENV    14    /* set "str" to getenv(text) */
  291. ! #define FT_LS_TRIM    15    /* trim trailing white space from "str" */
  292. ! #define FT_LV_COMP    16    /* set "value" to comp (as dec. num) */
  293. ! #define FT_LV_COMPFLAG    17    /* set "value" to comp flag word */
  294. ! #define FT_LV_LIT    18    /* set "value" to literal num */
  295. ! #define FT_LV_DAT    19    /* set "value" to dat[n] */
  296. ! #define FT_LV_STRLEN    20    /* set "value" to length of "str" */
  297. ! #define FT_LV_PLUS_L    21    /* set "value" += literal */
  298. ! #define FT_LV_MINUS_L    22    /* set "value" -= literal */
  299. ! #define FT_LV_DIVIDE_L    23    /* set "value" to value / literal */
  300. ! #define FT_LV_CHAR_LEFT 24    /* set "value" to char left in output */
  301.   
  302. ! #define FT_LS_MONTH    25    /* set "str" to tws month */
  303. ! #define FT_LS_LMONTH    26    /* set "str" to long tws month */
  304. ! #define FT_LS_ZONE    27    /* set "str" to tws timezone */
  305. ! #define FT_LS_DAY    28    /* set "str" to tws weekday */
  306. ! #define FT_LS_WEEKDAY    29    /* set "str" to long tws weekday */
  307. ! #define FT_LS_822DATE    30    /* set "str" to 822 date str */
  308. ! #define FT_LS_PRETTY    31    /* set "str" to pretty (?) date str */
  309. ! #define FT_LV_SEC    32    /* set "value" to tws second */
  310. ! #define FT_LV_MIN    33    /* set "value" to tws minute */
  311. ! #define FT_LV_HOUR    34    /* set "value" to tws hour */
  312. ! #define FT_LV_MDAY    35    /* set "value" to tws day of month */
  313. ! #define FT_LV_MON    36    /* set "value" to tws month */
  314. ! #define FT_LV_YEAR    37    /* set "value" to tws year */
  315. ! #define FT_LV_YDAY    38    /* set "value" to tws day of year */
  316. ! #define FT_LV_WDAY    39    /* set "value" to tws weekday */
  317. ! #define FT_LV_ZONE    40    /* set "value" to tws timezone */
  318. ! #define FT_LV_CLOCK    41    /* set "value" to tws clock */
  319. ! #define FT_LV_RCLOCK    42    /* set "value" to now - tws clock */
  320. ! #define FT_LV_DAYF    43    /* set "value" to tws day flag */
  321. ! #define FT_LV_DST    44    /* set "value" to tws daylight savings flag */
  322. ! #define FT_LV_ZONEF    45    /* set "value" to tws timezone flag */
  323.   
  324. ! #define FT_LS_PERS    46    /* set "str" to person part of addr */
  325. ! #define FT_LS_MBOX    47    /* set "str" to mbox part of addr */
  326. ! #define FT_LS_HOST    48    /* set "str" to host part of addr */
  327. ! #define FT_LS_PATH    49    /* set "str" to route part of addr */
  328. ! #define FT_LS_GNAME    50    /* set "str" to group part of addr */
  329. ! #define FT_LS_NOTE    51    /* set "str" to comment part of addr */
  330. ! #define FT_LS_ADDR    52    /* set "str" to mbox@host */
  331. ! #define FT_LS_822ADDR    53    /* set "str" to 822 format addr */
  332. ! #define FT_LS_FRIENDLY    54    /* set "str" to "friendly" format addr */
  333. ! #define FT_LV_HOSTTYPE    55    /* set "value" to addr host type */
  334. ! #define FT_LV_INGRPF    56    /* set "value" to addr in-group flag */
  335. ! #define FT_LV_NOHOSTF    57    /* set "value" to addr no-host flag */
  336.   
  337.   /* Date Coercion */
  338. ! #define FT_LOCALDATE    58    /* Coerce date to local timezone */
  339. ! #define FT_GMTDATE    59    /* Coerce date to gmt */
  340.   
  341.   /* pre-format processing */
  342. ! #define FT_PARSEDATE    60    /* parse comp into a date (tws) struct */
  343. ! #define FT_PARSEADDR    61    /* parse comp into a mailaddr struct */
  344. ! #define FT_FORMATADDR    62    /* let external routine format addr */
  345. ! #define FT_MYMBOX    63    /* do "mymbox" test on comp */
  346.   
  347.   /* misc. */
  348.   #ifdef    VAN
  349. ! #define FT_ADDTOSEQ    64    /* add current msg to a sequence */
  350.   #endif
  351.   
  352.   /* conditionals & control flow (must be last) */
  353. ! #define FT_SAVESTR    65    /* save current str reg */
  354. ! #define FT_DONE        66    /* stop formatting */
  355. ! #define FT_PAUSE    67    /* pause */
  356. ! #define FT_NOP        68    /* nop */
  357. ! #define FT_GOTO        69    /* (relative) goto */
  358. ! #define FT_IF_S_NULL    70    /* test if "str" null */
  359. ! #define FT_IF_S        71    /* test if "str" non-null */
  360. ! #define FT_IF_V_EQ    72    /* test if "value" = literal */
  361. ! #define FT_IF_V_NE    73    /* test if "value" != literal */
  362. ! #define FT_IF_V_GT    74    /* test if "value" > literal */
  363. ! #define FT_IF_MATCH    75    /* test if "str" contains literal */
  364. ! #define FT_IF_AMATCH    76    /* test if "str" starts with literal */
  365. ! #define FT_S_NULL    77    /* V = 1 if "str" null */
  366. ! #define FT_S_NONNULL    78    /* V = 1 if "str" non-null */
  367. ! #define FT_V_EQ        79    /* V = 1 if "value" = literal */
  368. ! #define FT_V_NE        80    /* V = 1 if "value" != literal */
  369. ! #define FT_V_GT        81    /* V = 1 if "value" > literal */
  370. ! #define FT_V_MATCH    82    /* V = 1 if "str" contains literal */
  371. ! #define FT_V_AMATCH    83    /* V = 1 if "str" starts with literal */
  372.   
  373.   #define IF_FUNCS FT_S_NULL    /* start of "if" functions */
  374. *** ../mh-6.7-dist/h/formatsbr.h    Fri Dec 14 13:24:16 1990
  375. --- h/formatsbr.h    Thu Jan 23 15:14:58 1992
  376. ***************
  377. *** 1,4 ****
  378. --- 1,5 ----
  379.   /* formatsbr.h - definitions for fmtscan () */
  380. + /* $Id: formatsbr.h,v 1.1 1992/01/23 23:14:54 jromine Exp $ */
  381.   
  382.   /*
  383.    * This structure describes an "interesting" component.  It holds
  384. ***************
  385. *** 78,82 ****
  386.   #define f_value f_un.f_u_value
  387.   };
  388.   
  389. ! int    fmtscan ();
  390.   char   *new_fs ();
  391. --- 79,83 ----
  392.   #define f_value f_un.f_u_value
  393.   };
  394.   
  395. ! struct format *fmtscan ();
  396.   char   *new_fs ();
  397. *** ../mh-6.7-dist/h/mh.h    Fri Dec 14 13:24:16 1990
  398. --- h/mh.h    Thu Jan 23 16:03:59 1992
  399. ***************
  400. *** 1,5 ****
  401.   /* mh.h - main header file for all of MH */
  402. ! /* @(#)$Id: mh.h,v 2.6 90/04/05 15:06:09 sources Exp $ */
  403.   
  404.   
  405.   /* Well-used constants */
  406. --- 1,5 ----
  407.   /* mh.h - main header file for all of MH */
  408. ! /* @(#)$Id: mh.h,v 2.7 1992/01/24 00:03:50 jromine Exp $ */
  409.   
  410.   
  411.   /* Well-used constants */
  412. ***************
  413. *** 15,21 ****
  414. --- 15,25 ----
  415.   
  416.   #define NFOLDERS     300    /* max folder arguments on command line */
  417.   
  418. + #ifndef    UCI
  419.   #define    MAXFOLDER    1000    /* message increment */
  420. + #else
  421. + #define    MAXFOLDER    1500    /* message increment */
  422. + #endif
  423.   #define DMAXFOLDER       4    /* typical number of digits */
  424.   
  425.   #if !defined(BSD42) && !defined(BSD41A) && !defined(VMUNIX) && !defined(hpux)
  426. ***************
  427. *** 330,336 ****
  428.   
  429.   /* should be in <stdio.h> */
  430.   
  431. ! #ifndef    SYS5
  432.   typedef struct _iobuf  *FP;
  433.   FP   popen ();
  434.   #else    SYS5
  435. --- 334,340 ----
  436.   
  437.   /* should be in <stdio.h> */
  438.   
  439. ! #if    !defined(SYS5) && !defined(ncr)
  440.   typedef struct _iobuf  *FP;
  441.   FP   popen ();
  442.   #else    SYS5
  443. ***************
  444. *** 340,346 ****
  445.   
  446.   /* miscellaneous */
  447.   
  448. ! #if !defined(BSD42) && !defined(hpux)
  449.   #define    rename(f1,f2)    (link (f1, f2) != NOTOK ? unlink (f1) : NOTOK)
  450.   #endif    not BSD42
  451.   
  452. --- 344,350 ----
  453.   
  454.   /* miscellaneous */
  455.   
  456. ! #if !defined(BSD42) && !defined(hpux) && !defined(ncr)
  457.   #define    rename(f1,f2)    (link (f1, f2) != NOTOK ? unlink (f1) : NOTOK)
  458.   #endif    not BSD42
  459.   
  460. *** ../mh-6.7-dist/h/scansbr.h    Fri Dec 14 13:24:17 1990
  461. --- h/scansbr.h    Mon Dec  2 12:45:58 1991
  462. ***************
  463. *** 1,4 ****
  464. --- 1,5 ----
  465.   /* scansbr.h - definitions for scan () */
  466. + /* $Header: /i1/db3/src/bs/mh-develop/mh-6.7-new/h/RCS/scansbr.h,v 1.2 1991/12/02 20:45:51 jromine Exp $ */
  467.   
  468.   extern char *scanl;
  469.   
  470. ***************
  471. *** 14,26 ****
  472.   "%4(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%| %>%>\
  473.   %02(mon{date})/%02(mday{date})%<{date} %|*%>\
  474.   %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%>  \
  475. ! %{subject}%<{body}<<%{body}>>%>"
  476.   #else UK
  477.   #define    FORMAT    \
  478.   "%4(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%| %>%>\
  479.   %02(mday{date})/%02(mon{date})%<{date} %|*%>\
  480.   %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%>  \
  481. ! %{subject}%<{body}<<%{body}>>%>"
  482.   #endif    UK
  483.   
  484.   #define    WIDTH    78
  485. --- 15,27 ----
  486.   "%4(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%| %>%>\
  487.   %02(mon{date})/%02(mday{date})%<{date} %|*%>\
  488.   %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%>  \
  489. ! %{subject}%<{body}<<%{body}>>%>\n"
  490.   #else UK
  491.   #define    FORMAT    \
  492.   "%4(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%| %>%>\
  493.   %02(mday{date})/%02(mon{date})%<{date} %|*%>\
  494.   %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%>  \
  495. ! %{subject}%<{body}<<%{body}>>%>\n"
  496.   #endif    UK
  497.   
  498.   #define    WIDTH    78
  499. *** ../mh-6.7-dist/h/strings.h    Fri Dec 14 13:24:17 1990
  500. --- h/strings.h    Thu Jan 23 15:16:49 1992
  501. ***************
  502. *** 1,5 ****
  503.   /* strings.h - define standard string functions */
  504. ! /* @(#)$Id: strings.h,v 1.7 90/04/05 16:18:34 sources Exp $ */
  505.   
  506.   #ifndef    _STRINGS        /* once-only... */
  507.   #define    _STRINGS
  508. --- 1,5 ----
  509.   /* strings.h - define standard string functions */
  510. ! /* @(#)$Id: strings.h,v 1.8 1992/01/23 23:16:46 jromine Exp $ */
  511.   
  512.   #ifndef    _STRINGS        /* once-only... */
  513.   #define    _STRINGS
  514. ***************
  515. *** 13,19 ****
  516. --- 13,21 ----
  517.   char   *mktemp ();
  518.   char   *rindex ();
  519.   #ifndef    SPRINTFTYPE
  520. + #ifndef    ncr        /* NCR compiler complains about re-declaration */
  521.   char   *sprintf ();        /* I guess this is the new standard */
  522. + #endif
  523.   #else
  524.   SPRINTFTYPE sprintf ();
  525.   #endif
  526. *** ../mh-6.7-dist/papers/mh6.7/mh6.7.ms    Fri Dec 14 13:25:17 1990
  527. --- papers/mh6.7/mh6.7.ms    Thu Jan 30 14:41:39 1992
  528. ***************
  529. *** 1,2 ****
  530. ! .\" @(#)$Id: mh6.7.ms,v 1.10 90/04/10 13:23:45 sources Exp $
  531.   .\" Standard -ms macros
  532. --- 1,2 ----
  533. ! .\" @(#)$Id: mh6.7.ms,v 1.13 1992/01/30 22:41:36 jromine Exp $
  534.   .\" Standard -ms macros
  535. ***************
  536. *** 5,7 ****
  537.   .ds rq \\*U
  538. ! .DA "April 9, 1990"
  539.   .if n \{\
  540. --- 5,7 ----
  541.   .ds rq \\*U
  542. ! .DA "February 1, 1992"
  543.   .if n \{\
  544. ***************
  545. *** 10,13 ****
  546.   .\}
  547. ! .EH ''Changes to MH 6.7'%'
  548. ! .OH ''Changes to MH 6.7'%'
  549.   .TL
  550. --- 10,16 ----
  551.   .\}
  552. ! .\" .EH ''Changes to MH 6.7'%'
  553. ! .\" .OH ''Changes to MH 6.7'%'
  554. ! .ds LH Changes to MH 6.7
  555. ! .ds CH
  556. ! .ds RH %
  557.   .TL
  558. ***************
  559. *** 29,31 ****
  560.   UCI version of the RAND MH system from MH 6.6
  561. ! to MH 6.7.  The first part should be of interest to all users
  562.   of MH, while the latter part is of interest only to MH
  563. --- 32,35 ----
  564.   UCI version of the RAND MH system from MH 6.6
  565. ! to this release of MH 6.7.
  566. ! The first part should be of interest to all users
  567.   of MH, while the latter part is of interest only to MH
  568. ***************
  569. *** 94,98 ****
  570.   .KE
  571.   .SH
  572. ! GENERAL CHANGES
  573.   .LP
  574.   The author is pleased to announce that there are very few
  575. --- 98,340 ----
  576.   .KE
  577. + .ds LH Changes for MH 6.7.2
  578. + .bp
  579. + .\" .ds CF Feb 1, 1992
  580.   .SH
  581. ! CHANGES FOR MH 6.7.2
  582.   .LP
  583. + The MH.6.7.2 patch release is a maintenance
  584. + release.
  585. + This is the
  586. + current released version of \fIMH\fP as of February 1, 1992.
  587. + .PP
  588. + This release now supports the NCR Tower running SYS5R4.
  589. + The WP changes installed in MH.6.7.0 have been removed.
  590. + .SH 
  591. + Shared Libraries
  592. + .LP
  593. + Support for SYS 5 shared libraries is in progress.
  594. + .PP
  595. + Support for Sun OS 4.0 shared libraries had been improved.
  596. + The \fIMH\fP library has been modified to move initialized
  597. + data into a data definition file.  The shared library will
  598. + now consist of a \fBlibmh.so\fP and \fBlibmh.sa\fP file.
  599. + The shared library version number will no longer track the
  600. + \fIMH\fP patch release number, and its numbering begins with
  601. + version `1.1' with this release.
  602. + .SH
  603. + Replacement SendMail
  604. + .LP
  605. + Since many standard system programs expect to post mail by 
  606. + invoking \fB/usr/lib/sendmail\fP,
  607. + a minimal replacement \fISendMail\fP is provided in 
  608. + this release.  This replacement is meant to be installed
  609. + on (e.g., diskless) client workstations which post mail
  610. + using SMTP, and do not run a message transport system.
  611. + It will call \fIpost\fP to post mail; be sure you have
  612. + configured \fIMH\fP with the `/smtp' mts option.
  613. + This sendmail replacement is installed in your 
  614. + \fIMH\fP etc directory, and you should link 
  615. + \fB/usr/lib/sendmail\fP
  616. + to it.
  617. + .KS
  618. + .SH
  619. + Format Strings
  620. + .LP
  621. + A manual page for the \fIfmtdump\fP format string disassembler
  622. + is supplied, and some new format functions were added:
  623. + .IP folder \w'%getenv'u+2n
  624. + In \fIscan\fP, this component escape
  625. + contains the name of the current folder.
  626. + It is not defined for other \fIMH\fP commands.
  627. + .IP getenv
  628. + This function escape returns the value of an environment variable.
  629. + .KE
  630. + .PP
  631. + There will be some additional changes in these routines in the
  632. + next patch release.
  633. + .KS
  634. + .SH
  635. + Other Bug Fixes and Enhancements
  636. + .LP
  637. + In addition to some other minor enhancements,
  638. + some bugs were fixed which in general were not user\-visible:
  639. + .IP "Blind lists" \w'datexparsing'u+2n
  640. + Users may now specify RFC822 address groups in their
  641. + alias files.  These groups are implemented by \fIMH\fP 
  642. + as blind lists.
  643. + .IP "date parsing"
  644. + A number of sites have brain-damaged versions of \fBlex\fP.
  645. + \fIMH\fP will now come with the date parser already run
  646. + through lex.
  647. + .IP mark
  648. + A bug dealing with \fImark\fP and the sequence named `cur'
  649. + is fixed.  This was previously a problem for mh-e users.
  650. + .IP MH.doc
  651. + The \fIMH\fP nroff version of the manual no longer contains
  652. + teletype escape sequences.
  653. + .IP scan
  654. + Can now handle headers as long as 512 bytes.
  655. + .IP Signals
  656. + \fIMH\fP programs will no longer catch the \fBHUP\fP
  657. + and \fBTERM\fP signals while waiting for a sub-process.
  658. + This was causing hung processes when your terminal line was
  659. + was dropped unexpectedly.
  660. + .IP Signature
  661. + If your signature is not defined, \fIMH\fP will 
  662. + use the value of the gecos field of your \fB/etc/passwd\fP
  663. + entry as your signature.
  664. + .IP "version.sh"
  665. + A bug in the \fBawk\fP script in \fBconfig/version.sh\fP 
  666. + was fixed.
  667. + .KE
  668. + .ds LH Changes for MH 6.7.1a
  669. + .bp
  670. + .ds CF Janaruy 25, 1991
  671. + .SH 
  672. + CHANGES FOR MH 6.7.1a
  673. + .LP
  674. + The MH.6.7.1a patch was made available 
  675. + on January 25, 1991 for limited distribution only.
  676. + (This release had some known bugs, and so was
  677. + not widely distributed.)
  678. + This release incorporates several new features
  679. + of particular note to users of sequences and format strings,
  680. + as well as some general documentation improvements.
  681. + There are a few minor enhancements and internal bug fixes also.
  682. + Complete documentation of these changes is given in
  683. + the individual manual pages, and the \fBREAD-ME\fP file.
  684. + .SH
  685. + Message Sequences
  686. + .LP
  687. + A new manual page, \fImh\-sequence\0\fP(5), has been added.
  688. + This manual page attempts to completely document the
  689. + syntax and semantics of \fIMH\fP message sequence specifications.
  690. + .PP
  691. + A powerful new feature is the ability to specify message
  692. + ranges with user-defined sequences.  The  specification
  693. + \*(lqname:n\*(rq may be used, and it designates up to the
  694. + first `n' messages (or  last  `n' messages  for  `-n')
  695. + which  are  elements  of the user-defined sequence `name'.
  696. + .PP
  697. + The message
  698. + specifications \*(lqname:next\*(rq and \*(lqname:prev\*(rq
  699. + may also be used, and they
  700. + designate the
  701. + next or previous message (relative to the current message)
  702. + which is an element of the user-defined sequence `name'.
  703. + The specificaitions 
  704. + \*(lqname:first\*(rq and \*(lqname:last\*(rq are equivalent
  705. + to \*(lqname:1\*(rq and \*(lqname:\-1\*(rq, respectively.
  706. + The specification \*(lqname:cur\*(rq is not allowed
  707. + (use just \*(lqcur\*(rq instead).
  708. + .PP
  709. + These specifications allow the user to step through
  710. + a sequence with a command like \*(lqshow name:next\*(rq.
  711. + .SH
  712. + Format Strings
  713. + .LP
  714. + \fIMH\fP format strings now support an if-then-elseif-else
  715. + clause (the `elseif' is new).  This will make
  716. + format strings with multi-case conditions somewhat less complex.
  717. + .PP
  718. + A new format function `addr' had been added.  This function
  719. + takes an address header name as its argument, and returns
  720. + a rendering of the address contained in that header
  721. + as \*(lquser@host\*(rq or \*(lqhost!user\*(rq.
  722. + .PP
  723. + Format widths now may be specified as a negative number.
  724. + This causes the output to be right-justified
  725. + within the format width.
  726. + .KS
  727. + .SH
  728. + Other Changes
  729. + .LP
  730. + Along with a few minor enhancements,
  731. + some bugs were fixed which in general were not user-visible:
  732. + .IP "fmtdump" \w'whatnow'u+2n
  733. + This new program 
  734. + produces an pseudo-language
  735. + representation of an \fIMH\fP format file, vaguely
  736. + reminiscent of assembly language.  While this output format
  737. + is not explicitly documented,
  738. + it can still be useful when debugging \fIMH\fP format files.
  739. + .IP "refile"
  740. + Now takes a `\-\[no\]rmmproc' switch.  This makes it
  741. + easier to avoid loops when your \*(lqrmmproc\*(rq calls \fIrefile\fP.
  742. + .IP "slocal"
  743. + A problem with the UUCP-style mailboxes,
  744. + the `RPATHS' configuration option,
  745. + and the \*(lqReturn-Path:\*(rq header was fixed.
  746. + .IP "sortm"
  747. + Will ensure that no messages are lost if it is interrupted.
  748. + .IP "whatnow"
  749. + Will now tell you where it is leaving the draft, when
  750. + interrupted in the initial edit.  Previously the draft 
  751. + was simply unlinked.
  752. + .KE
  753. + .KS
  754. + .SH
  755. + Compilation Options
  756. + .IP "LOCKF" \w'whatnow'u+2n
  757. + This option causes \fIMH\fP to use the \fBlockf()\fP
  758. + system call for locking (if available),
  759. + instead of \fBflock()\fP.
  760. + .KE
  761. + .ds LH Changes for MH 6.7.1
  762. + .bp
  763. + .ds CF December 14, 1990
  764. + .SH 
  765. + CHANGES FOR MH 6.7.1
  766. + .LP
  767. + The MH.6.7.1 patch release is a maintenance
  768. + release, and as such, provides few changes from 
  769. + the previous release.  This is the
  770. + current released version of \fIMH\fP as of December 14, 1990.
  771. + .SH
  772. + User-Visible Changes
  773. + .LP
  774. + The major change in this release is to the
  775. + POP daemon (popd).  In \fIMH\fP 6.7,
  776. + it was changed to be able to read both UUCP and
  777. + MMDF-style mailboxes.  This did not work as reported.  The
  778. + code has now been changed to parse MMDF-style mailboxes if
  779. + you are configuring MH to run with MMDF as your message
  780. + transport system.  Otherwise, UUCP-style mailboxes are
  781. + expected.
  782. + .PP
  783. + Since there are number of client programs available for
  784. + only the POP2 protocol instead of POP3, popd has been
  785. + updated to support both protocols.  This is a major
  786. + win.  If you are compiling
  787. + with POP turned on, add the `POP2' option to
  788. + your \fIMH\fP config file, and the POP daemon
  789. + will respond to POP2 or POP3 commands.  If you're using
  790. + POP, there's no reason not to include this option; it does
  791. + not affect the existing support for POP3.
  792. + .KS
  793. + .SH
  794. + Internal Changes
  795. + .LP
  796. + Some bugs were fixed which in general were not user-visible:
  797. + .IP "context" \w'replnnetcn'u+2n
  798. + Errors when writing out sequences are detected correctly.
  799. + .IP "inc"
  800. + No longer inserts extra blank lines into messages.
  801. + .IP "mh-format"
  802. + A nil pointer bug in the address parser was fixed.
  803. + .IP "repl, etc."
  804. + The malloc/free problem has been fixed.
  805. + .IP "rmf"
  806. + A spelling error in the `\-nointeractive' switch has been corrected.
  807. + .IP "rcvtty"
  808. + Will not print the message size if not available (i.e., zero).
  809. + .IP "send/post"
  810. + Illegal signatures (those containing unquoted "."s) will be quoted.
  811. + .KE
  812. + .ds LH Changes for MH 6.7.0
  813. + .bp
  814. + .ds CF April 12, 1990
  815. + .SH
  816. + GENERAL CHANGES FOR MH 6.7.0
  817. + .LP
  818.   The author is pleased to announce that there are very few
  819. ***************
  820. *** 106,107 ****
  821. --- 348,351 ----
  822.   it is backward\-compatible with the previous release.
  823. + \fIMH\fP 6.7.0 is the current released version of \fIMH\fP
  824. + as of April 12, 1990.
  825.   .PP
  826. *** ../mh-6.7-dist/sbr/addrsbr.c    Fri Dec 14 13:25:31 1990
  827. --- sbr/addrsbr.c    Thu Jan 30 14:39:50 1992
  828. ***************
  829. *** 1,6 ****
  830.   /* addrsbr.c - parse addresses 822-style */
  831.   #ifndef    lint
  832. ! static char ident[] = "@(#)$Id: addrsbr.c,v 1.7 90/11/05 12:26:41 mh Exp $";
  833.   #endif    lint
  834.   
  835.   #include "../h/mh.h"
  836. --- 1,6 ----
  837.   /* addrsbr.c - parse addresses 822-style */
  838.   #ifndef    lint
  839. ! static char ident[] = "@(#)$Id: addrsbr.c,v 1.10 1992/01/30 22:39:48 jromine Exp $";
  840.   #endif    lint
  841.   
  842.   #include "../h/mh.h"
  843. ***************
  844. *** 106,120 ****
  845.   
  846.   char   *getusr ();
  847.   
  848. - #ifdef    WP
  849. - int    do_wp = 0;
  850. - #ifdef    BERK
  851. - char   *wp_expand ();
  852. - #endif
  853. - #endif
  854.   /*   */
  855.   
  856.   char   *getname (addrs)
  857. --- 106,111 ----
  858. ***************
  859. *** 187,221 ****
  860.       while ( (c = *addrs++) == ',' || isspace(c))
  861.       ;
  862.       
  863. - #ifdef    WP
  864. -     if (do_wp && c == '<' && *addrs == '<') {
  865. -     register char  *cp,
  866. -                *dp,
  867. -                *ep;
  868. -     if (cp = index (++addrs, '>')) {
  869. -         *++cp = NULL;
  870. -         if (dp = wp_expand (addrs, NULLCP)) {
  871. -         *(addrs - 1) = NULL;
  872. -         ep = concat (saved_addr, dp, cp, NULLCP);
  873. -         addrs = ep + strlen (saved_addr);
  874. -         while ((c = *addrs++) == ',' || isspace (c))
  875. -             continue;
  876. -         free (saved_addr);
  877. -         saved_addr = ep;
  878. -         free (dp);
  879. -         }
  880. -         else {
  881. -         err = "unable to expand WhitePages query";
  882. -         (void) strcpy (adrtext, addrs);
  883. -         addrs = cp;
  884. -         goto out;
  885. -         }
  886. -         
  887. -     }
  888. -     }
  889. - #endif
  890.       *nxtout = *adrcopy = '\0';
  891.       while (state != EOA) {
  892.       *adrcopy++ = c;
  893. --- 178,183 ----
  894. ***************
  895. *** 316,339 ****
  896.        * addr points to where we should start scanning next time.
  897.        */
  898.       *(nxtout-1) = *(adrcopy-1) = '\0';
  899. - #ifdef    WP
  900. - out: ;
  901. - #endif
  902.       if (*adr && !err) {
  903.       adr_ptr = addrs-1;
  904. - #ifndef    WP
  905.       return adrtext;
  906. - #endif
  907.       } else {
  908.       free (saved_addr);
  909.       adr_ptr = NULL;
  910. - #ifndef    WP
  911.       return NULL;
  912. - #endif
  913.       }
  914. - #ifdef    WP
  915. -     return adrtext;
  916. - #endif
  917.   #else    not BERK
  918.       register struct adrx *ap;
  919.   
  920. --- 278,291 ----
  921. ***************
  922. *** 888,1036 ****
  923.   
  924.       return 0;
  925.   }
  926. - /*   */
  927. - #ifdef    WP
  928. - #include <signal.h>
  929. - static char *fredproc = NULL;
  930. - char   *wp_expand (query, error)
  931. - char   *query,
  932. -        *error;
  933. - {
  934. -     register int    cc,
  935. -             i,
  936. -             vecp;
  937. -     TYPESIG     (*istat) (), (*qstat) (), (*pstat) ();
  938. -     register char  *bp,
  939. -            *cp;
  940. -     char   *ep,
  941. -         buffer[BUFSIZ],
  942. -         fds[10],
  943. -        *vec[10];
  944. -     static int child_id = NOTOK,
  945. -         pdi[2],
  946. -         pdo[2];
  947. -     if (error)
  948. -     (void) strcpy (error, "unable to expand WhitePages query: ");
  949. -     if (child_id == NOTOK || kill (child_id, 0) == NOTOK) {
  950. -     if (!isatty (fileno (stdout))) {
  951. -         if (error)
  952. -         (void) strcat (error, "not a tty");
  953. -         return NULLCP;
  954. -     }
  955. -     if (fredproc == NULL && (fredproc = m_find ("fredproc")) == NULL)
  956. -         fredproc = "fred";
  957. -     if (pipe (pdi) == NOTOK) {
  958. -         if (error)
  959. -         (void) strcat (error, "unable to pipe");
  960. -         return NULLCP;
  961. -     }
  962. -     if (pipe (pdo) == NOTOK) {
  963. -         if (error)
  964. -         (void) strcat (error, "unable to pipe");
  965. - losing: ;
  966. -         (void) close (pdi[0]);
  967. -         (void) close (pdi[1]);
  968. -         return NULLCP;
  969. -     }
  970. -     for (i = 0; (child_id = vfork ()) == NOTOK && i < 5; i++)
  971. -         sleep (5);
  972. -     switch (child_id) {
  973. -         case NOTOK:
  974. -             if (error)
  975. -             (void) strcat (error, "unable to fork");
  976. -         (void) close (pdo[0]);
  977. -         (void) close (pdo[1]);
  978. -         goto losing;
  979. -         case OK:
  980. -         (void) close (pdi[0]);
  981. -         (void) close (pdo[1]);
  982. -         (void) sprintf (fds, "%d %d", pdo[0], pdi[1]);
  983. -         vecp = 0;
  984. -         vec[vecp++] = r1bindex (fredproc, '/');
  985. -         vec[vecp++] = "-q";
  986. -         vec[vecp++] = fds;
  987. -         vec[vecp] = NULL;
  988. -         execvp (fredproc, vec);
  989. -         _exit (-1);        /* NOTREACHED */
  990. -         default:
  991. -         (void) close (pdi[1]);
  992. -         (void) close (pdo[0]);
  993. -         break;
  994. -     }
  995. -     }
  996. -     istat = signal (SIGINT, SIG_IGN);
  997. -     qstat = signal (SIGQUIT, SIG_IGN);
  998. -     pstat = signal (SIGPIPE, SIG_IGN);
  999. -     (void) sprintf (buffer, "%s\n", query);
  1000. -     cc = write (pdo[1], buffer, i = strlen (buffer));
  1001. -     (void) signal (SIGPIPE, pstat);
  1002. -     if (cc != i) {
  1003. -     if (error)
  1004. -         (void) strcat (error, "write to pipe failed");
  1005. - lost_child: ;
  1006. -     (void) kill (child_id, SIGTERM);
  1007. -     (void) close (pdi[0]);
  1008. -     (void) close (pdo[1]);
  1009. -     child_id = NOTOK;
  1010. -     return NULLCP;
  1011. -     }
  1012. -     for (ep = (bp = buffer) + sizeof buffer - 1;
  1013. -          (i = read (pdi[0], bp, ep - bp)) > 0; ) {
  1014. -     for (cp = bp + i; bp < cp; bp++)
  1015. -         if (*bp == '\n')
  1016. -         break;
  1017. -     if (bp < cp)
  1018. -         break;
  1019. -     }
  1020. -     (void) signal (SIGINT, istat);
  1021. -     (void) signal (SIGQUIT, qstat);
  1022. -     if (i == NOTOK) {
  1023. -     if (error)
  1024. -         (void) strcat (error, "read from pipe failed");
  1025. -     goto lost_child;
  1026. -     }
  1027. -     if (i == 0) {
  1028. -     if (error)
  1029. -         (void) sprintf (error + strlen (error), "%s exited prematurely",
  1030. -                 fredproc);
  1031. -     goto lost_child;
  1032. -     }
  1033. -     *bp = NULL;
  1034. -     if (error)
  1035. -     if (bp != buffer)
  1036. -         error[0]  = NULL;
  1037. -     else
  1038. -         (void) strcpy (error, "unable to expand WhitePages query");
  1039. -     return (*buffer ? getcpy (buffer) : NULLCP);
  1040. - }
  1041. - #endif
  1042. --- 840,842 ----
  1043. *** ../mh-6.7-dist/sbr/copy.c    Fri Dec 14 13:25:33 1990
  1044. --- sbr/copy.c    Thu Jan 23 15:11:26 1992
  1045. ***************
  1046. *** 9,12 ****
  1047.       continue;
  1048.   
  1049.       return (to - 1);
  1050. ! };
  1051. --- 9,12 ----
  1052.       continue;
  1053.   
  1054.       return (to - 1);
  1055. ! }
  1056. *** ../mh-6.7-dist/sbr/discard.c    Fri Dec 14 13:25:33 1990
  1057. --- sbr/discard.c    Thu Feb 14 14:49:10 1991
  1058. ***************
  1059. *** 1,4 ****
  1060. --- 1,7 ----
  1061.   /* discard.c - discard output on a file pointer */
  1062. + #ifndef    lint
  1063. + static char ident[] = "@(#)$Id: discard.c,v 1.4 90/04/05 15:31:32 sources Exp $";
  1064. + #endif    lint
  1065.   
  1066.   #include "../h/mh.h"
  1067.   #include <stdio.h>
  1068. *** ../mh-6.7-dist/sbr/fmtcompile.c    Wed Jan 29 17:00:21 1992
  1069. --- sbr/fmtcompile.c    Thu Jan 23 15:11:10 1992
  1070. ***************
  1071. *** 1,6 ****
  1072.   /* fmtcompile.c - "compile" format strings for fmtscan */
  1073.   #ifndef    lint
  1074. ! static char ident[] = "@(#)$Id: fmtcompile.c,v 1.9 91/01/10 08:35:40 mh Exp $";
  1075.   #endif    lint
  1076.   
  1077.   #include "../h/mh.h"
  1078. --- 1,6 ----
  1079.   /* fmtcompile.c - "compile" format strings for fmtscan */
  1080.   #ifndef    lint
  1081. ! static char ident[] = "@(#)$Id: fmtcompile.c,v 1.10 1992/01/23 23:10:58 jromine Exp $";
  1082.   #endif    lint
  1083.   
  1084.   #include "../h/mh.h"
  1085. ***************
  1086. *** 63,68 ****
  1087. --- 63,69 ----
  1088.   
  1089.       "comp",    TF_COMP,    FT_LS_COMP,    0,        TFL_PUTS,
  1090.       "lit",    TF_STR,        FT_LS_LIT,    0,        TFL_PUTS,
  1091. +     "getenv",    TF_STR,        FT_LS_GETENV,    0,        TFL_PUTS,
  1092.       "trim",    TF_EXPR,    FT_LS_TRIM,    0,        0,
  1093.       "compval",    TF_COMP,    FT_LV_COMP,    0,        TFL_PUTN,
  1094.       "compflag",    TF_COMP,    FT_LV_COMPFLAG,    0,        TFL_PUTN,
  1095. ***************
  1096. *** 175,180 ****
  1097. --- 176,182 ----
  1098.   static char *do_func();
  1099.   static char *do_expr();
  1100.   static char *do_if();
  1101. + static char *do_loop();
  1102.   
  1103.   static char *format_string;
  1104.   static char *usr_fstring;    /* for CERROR */
  1105. ***************
  1106. *** 241,247 ****
  1107.       if (*cp) {
  1108.       CERROR("extra '%>', '%|' or '%?'");
  1109.       }
  1110. !     NEW(FT_DONE,0,0);
  1111.       *fmt = formatvec;
  1112.   
  1113.       return (ncomp);
  1114. --- 243,249 ----
  1115.       if (*cp) {
  1116.       CERROR("extra '%>', '%|' or '%?'");
  1117.       }
  1118. !     LV(FT_DONE,0);        /* really done */
  1119.       *fmt = formatvec;
  1120.   
  1121.       return (ncomp);
  1122. ***************
  1123. *** 280,285 ****
  1124. --- 282,288 ----
  1125.       case '|':
  1126.       case '>':
  1127.       case '?':
  1128. +     case ']':
  1129.           return (cp);
  1130.   
  1131.       case '<':
  1132. ***************
  1133. *** 286,291 ****
  1134. --- 289,298 ----
  1135.           cp = do_if(++cp);
  1136.           break;
  1137.   
  1138. +     case '[':    /* ] */
  1139. +         cp = do_loop(++cp);
  1140. +         break;
  1141.       default:
  1142.           cp = do_spec(cp);
  1143.           break;
  1144. ***************
  1145. *** 511,516 ****
  1146. --- 518,541 ----
  1147.       CERROR ("'(', '{', '%<' or ')' expected");
  1148.       }
  1149.       return (cp);
  1150. + }
  1151. + static char *do_loop(sp)
  1152. +     register char *sp;
  1153. + {
  1154. +     register char *cp = sp;
  1155. +     struct format *floop;
  1156. +     floop = next_fp;
  1157. +     cp = compile (cp);
  1158. +     if (*cp++ != ']')
  1159. +     CERROR ("']' expected");
  1160. +     LV(FT_DONE, 1);        /* not yet done */
  1161. +     LV(FT_GOTO, 0);
  1162. +     fp->f_skip = floop - fp;    /* skip backwards */
  1163. +     return cp;
  1164.   }
  1165.   
  1166.   static char *do_if(sp)
  1167. *** /dev/null    Thu Jan 30 13:49:21 1992
  1168. --- sbr/formatdef.c    Fri Jan 24 10:22:19 1992
  1169. ***************
  1170. *** 0 ****
  1171. --- 1,7 ----
  1172. + /* formatdef.c - some defines for sbr/formatsbr.c */
  1173. + #ifndef    lint
  1174. + static char ident[] = "@(#)$Id: formatdef.c,v 1.2 1992/01/24 18:22:15 jromine Exp $";
  1175. + #endif    lint
  1176. + #include "../h/addrsbr.h"
  1177. + int    fmt_norm = AD_NAME;
  1178. *** ../mh-6.7-dist/sbr/formatsbr.c    Wed Jan 29 17:00:21 1992
  1179. --- sbr/formatsbr.c    Fri Jan 24 10:09:34 1992
  1180. ***************
  1181. *** 1,6 ****
  1182.   /* formatsbr.c - format string interpretation */
  1183.   #ifndef    lint
  1184. ! static char ident[] = "@(#)$Id: formatsbr.c,v 1.12 91/01/09 22:34:45 mh Exp $";
  1185.   #endif    lint
  1186.   
  1187.   #include "../h/mh.h"
  1188. --- 1,6 ----
  1189.   /* formatsbr.c - format string interpretation */
  1190.   #ifndef    lint
  1191. ! static char ident[] = "@(#)$Id: formatsbr.c,v 1.14 1992/01/24 18:09:25 jromine Exp $";
  1192.   #endif    lint
  1193.   
  1194.   #include "../h/mh.h"
  1195. ***************
  1196. *** 27,33 ****
  1197.   
  1198.   static normalize();
  1199.   
  1200. ! int    fmt_norm = AD_NAME;
  1201.   struct mailname fmt_mnull;
  1202.   
  1203.   
  1204. --- 27,33 ----
  1205.   
  1206.   static normalize();
  1207.   
  1208. ! extern int fmt_norm;        /* defined in sbr/formatdef.c = AD_NAME */
  1209.   struct mailname fmt_mnull;
  1210.   
  1211.   
  1212. ***************
  1213. *** 223,228 ****
  1214. --- 223,229 ----
  1215.                 "September","October", "November","December" };
  1216.   
  1217.   
  1218. + struct format *
  1219.   fmtscan (format, scanl, width, dat)
  1220.       struct format *format;
  1221.       char    *scanl;
  1222. ***************
  1223. *** 390,395 ****
  1224. --- 391,400 ----
  1225.       case FT_LS_LIT:
  1226.           str = fmt->f_text;
  1227.           break;
  1228. +     case FT_LS_GETENV:
  1229. +         if (!(str = getenv (fmt->f_text)))
  1230. +         str = "";
  1231. +         break;
  1232.       case FT_LS_TRIM:
  1233.           if (str) {
  1234.               register char *xp;
  1235. ***************
  1236. *** 744,752 ****
  1237.       }
  1238.       fmt++;
  1239.       }
  1240.       finished:;
  1241.       if (cp[-1] != '\n')
  1242.       *cp++ = '\n';
  1243.       *cp   = NULL;
  1244. !     return (value);
  1245.   }
  1246. --- 749,769 ----
  1247.       }
  1248.       fmt++;
  1249.       }
  1250. + #ifndef JLR
  1251.       finished:;
  1252.       if (cp[-1] != '\n')
  1253.       *cp++ = '\n';
  1254.       *cp   = NULL;
  1255. !     return ((struct format *)0);
  1256. ! #else    /* JLR */
  1257. !     if (cp[-1] != '\n')
  1258. !     *cp++ = '\n';
  1259. !     while (fmt->f_type != FT_DONE)
  1260. !     fmt++;
  1261. !     finished:;    
  1262. !     *cp = '\0';
  1263. !     return (fmt -> f_value ? ++fmt : (struct format *)0);
  1264. ! #endif /* JLR */
  1265.   }
  1266. *** ../mh-6.7-dist/sbr/help.c    Fri Dec 14 13:25:35 1990
  1267. --- sbr/help.c    Fri Jan 24 17:19:15 1992
  1268. ***************
  1269. *** 1,4 ****
  1270. --- 1,7 ----
  1271.   /* help.c - print the usage line */
  1272. + #ifndef lint
  1273. + static char ident[] = "@(#)$Id: help.c,v 1.2 1992/01/25 01:19:05 jromine Exp $";
  1274. + #endif  lint
  1275.   
  1276.   #include "../h/mh.h"
  1277.   #include <stdio.h>
  1278. ***************
  1279. *** 22,28 ****
  1280.       printf ("  switches are:\n");
  1281.       printsw (ALL, swp, "-");
  1282.   
  1283. !     printf ("\nversion: %s\n", version);
  1284.   
  1285.       nameoutput = linepos = 0;
  1286.       outputlinelen = OUTPUTLINELEN;
  1287. --- 25,33 ----
  1288.       printf ("  switches are:\n");
  1289.       printsw (ALL, swp, "-");
  1290.   
  1291. !     if (ssequal ("@(#)", cp = version))
  1292. !     cp += 4;
  1293. !     printf ("\nversion: %s\n", cp);
  1294.   
  1295.       nameoutput = linepos = 0;
  1296.       outputlinelen = OUTPUTLINELEN;
  1297. *** ../mh-6.7-dist/sbr/m_convert.c    Wed Jan 29 17:00:22 1992
  1298. --- sbr/m_convert.c    Tue Feb 12 16:51:12 1991
  1299. ***************
  1300. *** 1,6 ****
  1301.   /* m_convert.c - parse a message sequence and set SELECTED */
  1302.   #ifndef    lint
  1303. ! static char ident[] = "@(#)$Id: m_convert.c,v 1.6 91/01/09 11:19:24 mh Exp $";
  1304.   #endif    lint
  1305.   
  1306.   #include "../h/mh.h"
  1307. --- 1,6 ----
  1308.   /* m_convert.c - parse a message sequence and set SELECTED */
  1309.   #ifndef    lint
  1310. ! static char ident[] = "@(#)$Id: m_convert.c,v 1.7 91/02/12 16:51:00 mh Exp $";
  1311.   #endif    lint
  1312.   
  1313.   #include "../h/mh.h"
  1314. ***************
  1315. *** 270,275 ****
  1316. --- 270,277 ----
  1317.       register char  *dp;
  1318.   
  1319.       if (strcmp (cp, "cur") == 0)/* hack for "cur-xyz", etc. */
  1320. +     return OK;
  1321. +     if (ssequal ("cur:", cp))    /* this code need to be rewritten... */
  1322.       return OK;
  1323.   
  1324.       if (inverted = (dp = m_find (nsequence)) && *dp && ssequal (dp, cp))
  1325. *** ../mh-6.7-dist/sbr/m_getfld.c    Fri Dec 14 13:25:37 1990
  1326. --- sbr/m_getfld.c    Mon Jan 27 10:00:52 1992
  1327. ***************
  1328. *** 1,6 ****
  1329.   /* m_getfld.c - read/parse a message */
  1330.   #ifndef    lint
  1331. ! static char ident[] = "@(#)$Id: m_getfld.c,v 1.8 90/04/18 13:48:12 sources Exp $";
  1332.   #endif    lint
  1333.   
  1334.   #include "../h/mh.h"
  1335. --- 1,6 ----
  1336.   /* m_getfld.c - read/parse a message */
  1337.   #ifndef    lint
  1338. ! static char ident[] = "@(#)$Id: m_getfld.c,v 1.9 1992/01/24 18:03:41 jromine Exp $";
  1339.   #endif    lint
  1340.   
  1341.   #include "../h/mh.h"
  1342. ***************
  1343. *** 143,154 ****
  1344.   
  1345.   static unsigned char **pat_map;
  1346.   
  1347. ! int    msg_count = 0;    /* disgusting hack for "inc" so it can
  1348.                * know how many characters were stuffed
  1349.                * in the buffer on the last call (see
  1350.                * comments in uip/scansbr.c) */
  1351.   
  1352. ! int    msg_style = MS_DEFAULT;
  1353.   /*
  1354.    * The "full" delimiter string for a packed maildrop consists
  1355.    * of a newline followed by the actual delimiter.  E.g., the
  1356. --- 143,155 ----
  1357.   
  1358.   static unsigned char **pat_map;
  1359.   
  1360. ! extern int msg_count;    /* defined in sbr/m_msgdef.c = 0
  1361. !              * disgusting hack for "inc" so it can 
  1362.                * know how many characters were stuffed
  1363.                * in the buffer on the last call (see
  1364.                * comments in uip/scansbr.c) */
  1365.   
  1366. ! extern int msg_style;    /* defined in sbr/m_msgdef.c = MS_DEFAULT */
  1367.   /*
  1368.    * The "full" delimiter string for a packed maildrop consists
  1369.    * of a newline followed by the actual delimiter.  E.g., the
  1370. ***************
  1371. *** 161,167 ****
  1372.    * is used in m_Eom because the first character of the string
  1373.    * has been read and matched before m_Eom is called.
  1374.    */
  1375. ! char    *msg_delim = "";
  1376.   static unsigned char *fdelim;
  1377.   static unsigned char *delimend;
  1378.   static int  fdelimlen;
  1379. --- 162,168 ----
  1380.    * is used in m_Eom because the first character of the string
  1381.    * has been read and matched before m_Eom is called.
  1382.    */
  1383. ! extern char *msg_delim;    /*  defined in sbr/m_msgdef.c = "" */
  1384.   static unsigned char *fdelim;
  1385.   static unsigned char *delimend;
  1386.   static int  fdelimlen;
  1387. *** /dev/null    Thu Jan 30 13:49:21 1992
  1388. --- sbr/m_msgdef.c    Fri Jan 24 10:23:08 1992
  1389. ***************
  1390. *** 0 ****
  1391. --- 1,25 ----
  1392. + /* m_msgdef.c - some defines for sbr/m_getfld.c */
  1393. + #ifndef    lint
  1394. + static char ident[] = "@(#)$Id: m_msgdef.c,v 1.1 1992/01/24 18:22:58 jromine Exp $";
  1395. + #endif    lint
  1396. + #include "../h/mh.h"
  1397. + int    msg_count = 0;    /* disgusting hack for "inc" so it can
  1398. +              * know how many characters were stuffed
  1399. +              * in the buffer on the last call (see
  1400. +              * comments in uip/scansbr.c) */
  1401. + int    msg_style = MS_DEFAULT;
  1402. + /*
  1403. +  * The "full" delimiter string for a packed maildrop consists
  1404. +  * of a newline followed by the actual delimiter.  E.g., the
  1405. +  * full string for a Unix maildrop would be: "\n\nFrom ".
  1406. +  * "Fdelim" points to the start of the full string and is used
  1407. +  * in the BODY case of the main routine to search the buffer for
  1408. +  * a possible eom.  Msg_delim points to the first character of
  1409. +  * the actual delim. string (i.e., fdelim+1).  Edelim
  1410. +  * points to the 2nd character of actual delimiter string.  It
  1411. +  * is used in m_Eom because the first character of the string
  1412. +  * has been read and matched before m_Eom is called.
  1413. +  */
  1414. + char    *msg_delim = "";
  1415. *** ../mh-6.7-dist/sbr/m_seq.c    Fri Dec 14 13:25:38 1990
  1416. --- sbr/m_seq.c    Thu Feb 14 14:44:50 1991
  1417. ***************
  1418. *** 1,4 ****
  1419. --- 1,7 ----
  1420.   /* m_seq.c - print out a message sequence */
  1421. + #ifndef    lint
  1422. + static char ident[] = "@(#)$Id: m_seq.c,v 1.7 91/02/14 14:44:38 mh Exp $";
  1423. + #endif    lint
  1424.   
  1425.   #include "../h/mh.h"
  1426.   #include <stdio.h>
  1427. ***************
  1428. *** 15,26 ****
  1429.       register char *bp;
  1430.       static char buffer[BUFSIZ*2];    /* for big sequences */
  1431.   
  1432. !     if (strcmp(current, cp) == 0) {
  1433. !         if (mp->curmsg) {
  1434. !             (void) sprintf(buffer, "%s", m_name(mp->curmsg));
  1435. !             return (buffer);
  1436. !         } else
  1437. !             return (NULL);
  1438.       }
  1439.       for (i = 0; mp->msgattrs[i]; i++)
  1440.           if (strcmp(mp->msgattrs[i], cp) == 0)
  1441. --- 18,31 ----
  1442.       register char *bp;
  1443.       static char buffer[BUFSIZ*2];    /* for big sequences */
  1444.   
  1445. !     if (strcmp (current, cp) == 0) {
  1446. !         /* assume this is in sync with msgstats["cur"] */
  1447. !         /* see m_seqadd() for details */
  1448. !         if (mp->curmsg) {    
  1449. !         (void) sprintf(buffer, "%s", m_name(mp->curmsg));
  1450. !         return (buffer);
  1451. !         } else
  1452. !         return (NULL);
  1453.       }
  1454.       for (i = 0; mp->msgattrs[i]; i++)
  1455.           if (strcmp(mp->msgattrs[i], cp) == 0)
  1456. *** ../mh-6.7-dist/sbr/m_seqnew.c    Fri Dec 14 13:25:39 1990
  1457. --- sbr/m_seqnew.c    Thu Feb 14 14:46:38 1991
  1458. ***************
  1459. *** 1,4 ****
  1460. --- 1,7 ----
  1461.   /* m_seqnew.c - manage sequences */
  1462. + #ifndef    lint
  1463. + static char ident[] = "@(#)$Id: m_seqnew.c,v 1.5 91/02/14 14:46:26 mh Exp $";
  1464. + #endif    lint
  1465.   
  1466.   #include "../h/mh.h"
  1467.   #include <ctype.h>
  1468. ***************
  1469. *** 69,74 ****
  1470. --- 72,81 ----
  1471.   
  1472.       if (!m_seqok (cp))
  1473.       return 0;
  1474. +     /* keep mp->curmsg & msgattrs["cur"] in sync - see m_seq() */
  1475. +     if (strcmp (current,cp) == 0)
  1476. +     mp->curmsg = j;    
  1477.   
  1478.       if (public == -1)        /* XXX */
  1479.       public = mp -> msgflags & READONLY ? 0 : 1;
  1480. *** ../mh-6.7-dist/sbr/makedir.c    Fri Dec 14 13:25:40 1990
  1481. --- sbr/makedir.c    Thu Jan 23 15:12:50 1992
  1482. ***************
  1483. *** 1,4 ****
  1484. --- 1,7 ----
  1485.   /* makedir.c - make a directory */
  1486. + #ifndef    lint
  1487. + static char ident[] = "@(#)$Id: makedir.c,v 1.7 1992/01/23 23:12:43 jromine Exp $";
  1488. + #endif    lint
  1489.   
  1490.   #if defined (BSD42) || defined (hpux)
  1491.   /* Modified to try recursive create.  Really, this should be broken
  1492. ***************
  1493. *** 28,34 ****
  1494.   {
  1495.       int     pid;
  1496.       register char  *cp;
  1497. ! #if defined (BSD42)  || defined (hpux)
  1498.       register char  *c;
  1499.       char path[MAXPATHLEN];
  1500.   #endif BSD42
  1501. --- 31,37 ----
  1502.   {
  1503.       int     pid;
  1504.       register char  *cp;
  1505. ! #if defined (BSD42)  || defined (hpux) || defined (SYS5DIR)
  1506.       register char  *c;
  1507.       char path[MAXPATHLEN];
  1508.   #endif BSD42
  1509. *** ../mh-6.7-dist/sbr/pidwait.c    Fri Dec 14 13:25:41 1990
  1510. --- sbr/pidwait.c    Wed Jan 29 15:57:35 1992
  1511. ***************
  1512. *** 1,4 ****
  1513. --- 1,7 ----
  1514.   /* pidwait.c - wait for child to exit */
  1515. + #ifndef    lint
  1516. + static char ident[] = "@(#)$Id: pidwait.c,v 1.5 1992/01/29 23:57:28 jromine Exp $";
  1517. + #endif    lint
  1518.   
  1519.   #include "../h/mh.h"
  1520.   #include <signal.h>
  1521. ***************
  1522. *** 21,30 ****
  1523.   #endif    BSD42
  1524.   
  1525.       if (sigsok == NOTOK) {
  1526.       hstat = signal (SIGHUP, SIG_IGN);
  1527.       istat = signal (SIGINT, SIG_IGN);
  1528.       qstat = signal (SIGQUIT, SIG_IGN);
  1529. -     tstat = signal (SIGTERM, SIG_IGN);
  1530.       }
  1531.   
  1532.       while ((pid = wait (&status)) != NOTOK && pid != id)
  1533. --- 24,35 ----
  1534.   #endif    BSD42
  1535.   
  1536.       if (sigsok == NOTOK) {
  1537. + #ifdef    notdef        /* I don't see why to trap these... */
  1538.       hstat = signal (SIGHUP, SIG_IGN);
  1539. +     tstat = signal (SIGTERM, SIG_IGN);
  1540. + #endif
  1541.       istat = signal (SIGINT, SIG_IGN);
  1542.       qstat = signal (SIGQUIT, SIG_IGN);
  1543.       }
  1544.   
  1545.       while ((pid = wait (&status)) != NOTOK && pid != id)
  1546. ***************
  1547. *** 31,40 ****
  1548.       continue;
  1549.   
  1550.       if (sigsok == NOTOK) {
  1551.       (void) signal (SIGHUP, hstat);
  1552.       (void) signal (SIGINT, istat);
  1553.       (void) signal (SIGQUIT, qstat);
  1554. -     (void) signal (SIGTERM, tstat);
  1555.       }
  1556.   
  1557.   #ifndef    BSD42
  1558. --- 36,47 ----
  1559.       continue;
  1560.   
  1561.       if (sigsok == NOTOK) {
  1562. + #ifdef    notdef
  1563.       (void) signal (SIGHUP, hstat);
  1564. +     (void) signal (SIGTERM, tstat);
  1565. + #endif
  1566.       (void) signal (SIGINT, istat);
  1567.       (void) signal (SIGQUIT, qstat);
  1568.       }
  1569.   
  1570.   #ifndef    BSD42
  1571. *** ../mh-6.7-dist/sbr/strindex.c    Fri Dec 14 13:25:42 1990
  1572. --- sbr/strindex.c    Thu Jan 23 15:13:41 1992
  1573. ***************
  1574. *** 1,4 ****
  1575. --- 1,7 ----
  1576.   /* strindex.c - "unsigned" lexical index */
  1577. + #ifndef    lint
  1578. + static char ident[] = "@(#)$Id: strindex.c,v 2.2 1990/04/05 15:30:30 sources Exp $";
  1579. + #endif    lint
  1580.   
  1581.   
  1582.   int  stringdex (p1, p2)
  1583. *** ../mh-6.7-dist/uip/fmtdump.c    Wed Jan 29 17:00:22 1992
  1584. --- uip/fmtdump.c    Thu Jan 23 16:04:50 1992
  1585. ***************
  1586. *** 1,5 ****
  1587.   #ifndef lint
  1588. ! static char ident[] = "@(#)$Id: fmtdump.c,v 1.2 91/01/25 15:38:06 mh Exp $";
  1589.   #endif
  1590.   /*
  1591.    * fmtdump - compile format file and dump out instructions
  1592. --- 1,5 ----
  1593.   #ifndef lint
  1594. ! static char ident[] = "@(#)$Id: fmtdump.c,v 1.7 1992/01/24 00:04:45 jromine Exp $";
  1595.   #endif
  1596.   /*
  1597.    * fmtdump - compile format file and dump out instructions
  1598. ***************
  1599. *** 66,72 ****
  1600.               if (findlabel(addr) < 0)
  1601.                   assignlabel(addr);
  1602.           }
  1603. !         if (fmt->f_type == FT_DONE)
  1604.               break;
  1605.       }
  1606.   
  1607. --- 66,72 ----
  1608.               if (findlabel(addr) < 0)
  1609.                   assignlabel(addr);
  1610.           }
  1611. !         if (fmt->f_type == FT_DONE && fmt->f_value == 0)
  1612.               break;
  1613.       }
  1614.   
  1615. ***************
  1616. *** 73,79 ****
  1617.       /* Dump them out! */
  1618.       for (fmt = fmth; fmt; ++fmt) {
  1619.           dumpone(fmt);
  1620. !         if (fmt->f_type == FT_DONE)
  1621.               break;
  1622.       }
  1623.   }
  1624. --- 73,79 ----
  1625.       /* Dump them out! */
  1626.       for (fmt = fmth; fmt; ++fmt) {
  1627.           dumpone(fmt);
  1628. !         if (fmt->f_type == FT_DONE && fmt->f_value == 0)
  1629.               break;
  1630.       }
  1631.   }
  1632. ***************
  1633. *** 135,140 ****
  1634. --- 135,141 ----
  1635.               printf(", c_flags %d", fmt->f_comp->c_flags);
  1636.           break;
  1637.   
  1638. +     case FT_LS_ADDR:
  1639.       case FT_LS_PERS:
  1640.       case FT_LS_MBOX:
  1641.       case FT_LS_HOST:
  1642. ***************
  1643. *** 196,205 ****
  1644. --- 197,208 ----
  1645.           putchar('\'');
  1646.           break;
  1647.   
  1648.       case FT_IF_S:
  1649.       case FT_IF_S_NULL:
  1650.       case FT_IF_MATCH:
  1651.       case FT_IF_AMATCH:
  1652. +         printf(" false, goto");
  1653.       case FT_GOTO:
  1654.           i = findlabel(fmt + fmt->f_skip);
  1655.           printf(" L%d", i);
  1656. ***************
  1657. *** 227,232 ****
  1658. --- 230,240 ----
  1659.           litputs(fmt->f_text);
  1660.           break;
  1661.   
  1662. +     case FT_LS_GETENV:
  1663. +         printf(" getenv ");
  1664. +         litputs(fmt->f_text);
  1665. +         break;
  1666.       case FT_LS_TRIM:
  1667.           printf(", width %d", fmt->f_width);
  1668.           break;
  1669. ***************
  1670. *** 279,284 ****
  1671. --- 287,293 ----
  1672.       case FT_PUTADDR: return("PUTADDR");
  1673.       case FT_LS_COMP: return("LS_COMP");
  1674.       case FT_LS_LIT: return("LS_LIT");
  1675. +     case FT_LS_GETENV: return("LS_GETENV");
  1676.       case FT_LS_TRIM: return("LS_TRIM");
  1677.       case FT_LV_COMP: return("LV_COMP");
  1678.       case FT_LV_COMPFLAG: return("LV_COMPFLAG");
  1679. ***************
  1680. *** 310,315 ****
  1681. --- 319,325 ----
  1682.       case FT_LV_DAYF: return("LV_DAYF");
  1683.       case FT_LV_DST: return("LV_DST");
  1684.       case FT_LV_ZONEF: return("LV_ZONEF");
  1685. +     case FT_LS_ADDR: return("LS_ADDR");
  1686.       case FT_LS_PERS: return("LS_PERS");
  1687.       case FT_LS_MBOX: return("LS_MBOX");
  1688.       case FT_LS_HOST: return("LS_HOST");
  1689. ***************
  1690. *** 331,336 ****
  1691. --- 341,349 ----
  1692.       case FT_ADDTOSEQ: return("ADDTOSEQ");
  1693.   #endif
  1694.       case FT_SAVESTR: return("SAVESTR");
  1695. + #ifdef    FT_PAUSE
  1696. +     case FT_PAUSE: return ("PAUSE");
  1697. + #endif
  1698.       case FT_DONE: return("DONE");
  1699.       case FT_NOP: return("NOP");
  1700.       case FT_GOTO: return("GOTO");
  1701. *** ../mh-6.7-dist/uip/mshcmds.c    Wed Jan 29 17:00:24 1992
  1702. --- uip/mshcmds.c    Thu Jan 23 14:58:19 1992
  1703. ***************
  1704. *** 1,6 ****
  1705.   /* mshcmds.c - command handlers in msh */
  1706.   #ifndef    lint
  1707. ! static char ident[] = "@(#)$Id: mshcmds.c,v 1.6 91/01/14 16:48:39 mh Exp $";
  1708.   #endif    lint
  1709.   
  1710.   #include "../h/mh.h"
  1711. --- 1,6 ----
  1712.   /* mshcmds.c - command handlers in msh */
  1713.   #ifndef    lint
  1714. ! static char ident[] = "@(#)$Id: mshcmds.c,v 1.7 1992/01/23 22:58:03 jromine Exp $";
  1715.   #endif    lint
  1716.   
  1717.   #include "../h/mh.h"
  1718. ***************
  1719. *** 2086,2092 ****
  1720.           else {
  1721.           zp = msh_ready (msgnum, 0);
  1722.           switch (state = scan (zp, msgnum, 0, nfs, width,
  1723. !             msgnum == mp -> curmsg, headersw,
  1724.               fmsh ? 0L : (long) (Msgs[msgnum].m_stop - Msgs[msgnum].m_start),
  1725.               1)) {
  1726.               case SCNMSG:
  1727. --- 2086,2093 ----
  1728.           else {
  1729.           zp = msh_ready (msgnum, 0);
  1730.           switch (state = scan (zp, msgnum, 0, nfs, width,
  1731. !             msgnum == mp -> curmsg, 
  1732. !             headersw ? (fmsh ? fmsh : mp -> foldpath) : (char *)0,
  1733.               fmsh ? 0L : (long) (Msgs[msgnum].m_stop - Msgs[msgnum].m_start),
  1734.               1)) {
  1735.               case SCNMSG:
  1736. *** ../mh-6.7-dist/uip/post.c    Fri Dec 14 13:26:08 1990
  1737. --- uip/post.c    Thu Jan 30 14:40:01 1992
  1738. ***************
  1739. *** 1,6 ****
  1740.   /* post.c - enter messages into the transport system */
  1741.   #ifndef    lint
  1742. ! static char ident[] = "@(#)$Id: post.c,v 2.8 90/04/05 15:35:20 sources Exp $";
  1743.   #endif    lint
  1744.   
  1745.   #include "../h/mh.h"
  1746. --- 1,6 ----
  1747.   /* post.c - enter messages into the transport system */
  1748.   #ifndef    lint
  1749. ! static char ident[] = "@(#)$Id: post.c,v 2.11 1992/01/30 22:39:58 jromine Exp $";
  1750.   #endif    lint
  1751.   
  1752.   #include "../h/mh.h"
  1753. ***************
  1754. *** 125,133 ****
  1755.   #define    SNOOPSW    29
  1756.       "snoop", -5,
  1757.   
  1758. - #define    FILLSW    30
  1759. -     "fill-in file", -7,
  1760.       NULL, NULL
  1761.   };
  1762.   
  1763. --- 125,130 ----
  1764. ***************
  1765. *** 234,240 ****
  1766.   #define    RESENT 1
  1767.   static int msgstate = NORMAL;
  1768.   
  1769. ! static long clock = 0L;        /* the time we started (more or less) */
  1770.   
  1771.   static TYPESIG  (*hstat) (), (*istat) (), (*qstat) (), (*tstat) ();
  1772.   
  1773. --- 231,237 ----
  1774.   #define    RESENT 1
  1775.   static int msgstate = NORMAL;
  1776.   
  1777. ! static long tclock = 0L;        /* the time we started (more or less) */
  1778.   
  1779.   static TYPESIG  (*hstat) (), (*istat) (), (*qstat) (), (*tstat) ();
  1780.   
  1781. ***************
  1782. *** 292,303 ****
  1783.   static int  encryptsw = 0;    /* encrypt it */
  1784.   
  1785.   
  1786. - #ifdef    WP
  1787. - extern int    do_wp;        /* fill-in white pages queries */
  1788. - #endif
  1789. - static char    *fill_in = NULLCP;
  1790.   long    lseek (), time ();
  1791.   
  1792.   static    putfmt(), start_headers(), finish_headers(), putgrp(), pl();
  1793. --- 289,294 ----
  1794. ***************
  1795. *** 510,522 ****
  1796.               snoop++;
  1797.               continue;
  1798.   #endif    SENDMTS
  1799. -         case FILLSW:
  1800. - #ifdef    WP
  1801. -             if (!(fill_in = *argp++) || *fill_in == '-')
  1802. -             adios (NULLCP, "missing argument to %s", argp[-2]);
  1803. - #endif
  1804. -             continue;
  1805.           }
  1806.       if (msg)
  1807.           adios (NULLCP, "only one message at a time!");
  1808. --- 501,506 ----
  1809. ***************
  1810. *** 525,533 ****
  1811.       }
  1812.   
  1813.       (void) alias (AliasFile);
  1814. - #ifdef    WP
  1815. -     do_wp++;
  1816. - #endif
  1817.   
  1818.   /*   */
  1819.   
  1820. --- 509,514 ----
  1821. ***************
  1822. *** 568,574 ****
  1823.       else
  1824.   #endif    MHMTS
  1825.       if (whomsw) {
  1826. !         if ((out = fopen (fill_in ? fill_in : "/dev/null", "w")) == NULL)
  1827.           adios ("/dev/null", "unable to open");
  1828.       }
  1829.       else {
  1830. --- 549,555 ----
  1831.       else
  1832.   #endif    MHMTS
  1833.       if (whomsw) {
  1834. !         if ((out = fopen ("/dev/null", "w")) == NULL)
  1835.           adios ("/dev/null", "unable to open");
  1836.       }
  1837.       else {
  1838. ***************
  1839. *** 609,615 ****
  1840.           case BODY: 
  1841.           case BODYEOF: 
  1842.           finish_headers (out);
  1843. !         if (whomsw && !fill_in)
  1844.               break;
  1845.           fprintf (out, "\n%s", buf);
  1846.           while (state == BODY) {
  1847. --- 590,596 ----
  1848.           case BODY: 
  1849.           case BODYEOF: 
  1850.           finish_headers (out);
  1851. !         if (whomsw)
  1852.               break;
  1853.           fprintf (out, "\n%s", buf);
  1854.           while (state == BODY) {
  1855. ***************
  1856. *** 733,750 ****
  1857.       }
  1858.   
  1859.       hdr = &hdrtab[i];
  1860. !     if (hdr -> flags & HIGN) {
  1861. !     if (fill_in)
  1862. !         fprintf (out, "%s: %s", name, str);
  1863.       return;
  1864. -     }
  1865.       if (hdr -> flags & HBAD) {
  1866. !     if (fill_in)
  1867. !         fprintf (out, "%s: %s", name, str);
  1868. !     else {
  1869. !         advise (NULLCP, "illegal header line -- %s:", name);
  1870. !         badmsg++;
  1871. !     }
  1872.       return;
  1873.       }
  1874.       msgflags |= (hdr -> set & ~(MVIS | MINV));
  1875. --- 714,724 ----
  1876.       }
  1877.   
  1878.       hdr = &hdrtab[i];
  1879. !     if (hdr -> flags & HIGN)
  1880.       return;
  1881.       if (hdr -> flags & HBAD) {
  1882. !     advise (NULLCP, "illegal header line -- %s:", name);
  1883. !     badmsg++;
  1884.       return;
  1885.       }
  1886.       msgflags |= (hdr -> set & ~(MVIS | MINV));
  1887. ***************
  1888. *** 752,762 ****
  1889.       if (hdr -> flags & HSUB)
  1890.       subject = subject ? add (str, add ("\t", subject)) : getcpy (str);
  1891.       if (hdr -> flags & HFCC) {
  1892. -     if (fill_in) {
  1893. -         fprintf (out, "%s: %s", name, str);
  1894. -         return;
  1895. -     }
  1896.       if (cp = rindex (str, '\n'))
  1897.           *cp = NULL;
  1898.       for (cp = pp = str; cp = index (pp, ','); pp = cp) {
  1899. --- 726,731 ----
  1900. ***************
  1901. *** 805,812 ****
  1902.   
  1903.       nameoutput = linepos = 0;
  1904.       (void) sprintf (namep, "%s%s",
  1905. !             !fill_in && (hdr -> flags & HMNG) ? "Original-" : "",
  1906. !             name);
  1907.   
  1908.       for (grp = 0, mp = tmpaddrs.m_next; mp; mp = np)
  1909.       if (mp -> m_nohost) {    /* also used to test (hdr -> flags & HTRY) */
  1910. --- 774,780 ----
  1911.   
  1912.       nameoutput = linepos = 0;
  1913.       (void) sprintf (namep, "%s%s",
  1914. !             (hdr -> flags & HMNG) ? "Original-" : "", name);
  1915.   
  1916.       for (grp = 0, mp = tmpaddrs.m_next; mp; mp = np)
  1917.       if (mp -> m_nohost) {    /* also used to test (hdr -> flags & HTRY) */
  1918. ***************
  1919. *** 822,832 ****
  1920.           }
  1921.           if (hdr -> flags & HBCC)
  1922.               mp -> m_bcc++;
  1923. !         if (mp -> m_ingrp = np -> m_ingrp)
  1924.               grp++;
  1925.   #ifdef    MHMTS
  1926.           mp -> m_aka = getcpy (np -> m_mbox);
  1927.   #endif    MHMTS
  1928.           if (putadr (namep, qp, mp, out, hdr -> flags))
  1929.               msgflags |= (hdr -> set & (MVIS | MINV));
  1930.           else
  1931. --- 790,802 ----
  1932.           }
  1933.           if (hdr -> flags & HBCC)
  1934.               mp -> m_bcc++;
  1935. !         if (mp -> m_ingrp)
  1936.               grp++;
  1937.   #ifdef    MHMTS
  1938.           mp -> m_aka = getcpy (np -> m_mbox);
  1939.   #endif    MHMTS
  1940. +         if (mp -> m_gname)
  1941. +             putgrp (namep, mp -> m_gname, out, hdr -> flags);
  1942.           if (putadr (namep, qp, mp, out, hdr -> flags))
  1943.               msgflags |= (hdr -> set & (MVIS | MINV));
  1944.           else
  1945. ***************
  1946. *** 857,867 ****
  1947.       advise (NULLCP, "%s: field does not allow groups", name);
  1948.       badmsg++;
  1949.       }
  1950. !     if (linepos) {
  1951. !     if (fill_in && grp > 0)
  1952. !         (void) putc (';', out);
  1953.       (void) putc ('\n', out);
  1954. -     }
  1955.   }
  1956.   
  1957.   /*   */
  1958. --- 827,834 ----
  1959.       advise (NULLCP, "%s: field does not allow groups", name);
  1960.       badmsg++;
  1961.       }
  1962. !     if (linepos)
  1963.       (void) putc ('\n', out);
  1964.   }
  1965.   
  1966.   /*   */
  1967. ***************
  1968. *** 874,880 ****
  1969.   
  1970.       myuid = getuid ();
  1971.       mygid = getgid ();
  1972. !     (void) time (&clock);
  1973.   
  1974.       (void) strcpy (from, adrsprintf (NULLCP, NULLCP));
  1975.   
  1976. --- 841,847 ----
  1977.   
  1978.       myuid = getuid ();
  1979.       mygid = getgid ();
  1980. !     (void) time (&tclock);
  1981.   
  1982.       (void) strcpy (from, adrsprintf (NULLCP, NULLCP));
  1983.   
  1984. ***************
  1985. *** 915,924 ****
  1986.           if (whomsw)
  1987.           break;
  1988.   
  1989. !         fprintf (out, "Date: %s\n", dtime (&clock));
  1990.           if (msgid)
  1991.           fprintf (out, "Message-ID: <%d.%ld@%s>\n",
  1992. !             getpid (), clock, LocalName ());
  1993.           if (msgflags & MFRM)
  1994.           fprintf (out, "Sender: %s\n", from);
  1995.           else
  1996. --- 882,891 ----
  1997.           if (whomsw)
  1998.           break;
  1999.   
  2000. !         fprintf (out, "Date: %s\n", dtime (&tclock));
  2001.           if (msgid)
  2002.           fprintf (out, "Message-ID: <%d.%ld@%s>\n",
  2003. !             getpid (), tclock, LocalName ());
  2004.           if (msgflags & MFRM)
  2005.           fprintf (out, "Sender: %s\n", from);
  2006.           else
  2007. ***************
  2008. *** 943,952 ****
  2009.           fprintf (out, "Sender: %s\n", from);
  2010.   #endif    MMDFI
  2011.   
  2012. !         fprintf (out, "Resent-Date: %s\n", dtime (&clock));
  2013.           if (msgid)
  2014.           fprintf (out, "Resent-Message-ID: <%d.%ld@%s>\n",
  2015. !             getpid (), clock, LocalName ());
  2016.           if (msgflags & MRFM)
  2017.           fprintf (out, "Resent-Sender: %s\n", from);
  2018.           else
  2019. --- 910,919 ----
  2020.           fprintf (out, "Sender: %s\n", from);
  2021.   #endif    MMDFI
  2022.   
  2023. !         fprintf (out, "Resent-Date: %s\n", dtime (&tclock));
  2024.           if (msgid)
  2025.           fprintf (out, "Resent-Message-ID: <%d.%ld@%s>\n",
  2026. !             getpid (), tclock, LocalName ());
  2027.           if (msgflags & MRFM)
  2028.           fprintf (out, "Resent-Sender: %s\n", from);
  2029.           else
  2030. ***************
  2031. *** 992,998 ****
  2032.   
  2033.       if (mp -> m_mbox == NULL || ((flags & HTRY) && !insert (mp)))
  2034.       return 0;
  2035. !     if (!fill_in && ((flags & (HBCC|HDCC)) || mp -> m_ingrp))
  2036.       return 1;
  2037.   
  2038.       if (!nameoutput) {
  2039. --- 959,965 ----
  2040.   
  2041.       if (mp -> m_mbox == NULL || ((flags & HTRY) && !insert (mp)))
  2042.       return 0;
  2043. !     if ((flags & (HBCC|HDCC)) || mp -> m_ingrp)
  2044.       return 1;
  2045.   
  2046.       if (!nameoutput) {
  2047. ***************
  2048. *** 1003,1009 ****
  2049.       if (*aka && mp -> m_type != UUCPHOST && !mp -> m_pers)
  2050.       mp -> m_pers = getcpy (aka);
  2051.       if (format) {
  2052. !     if (mp -> m_gname && !fill_in)
  2053.           (void) sprintf (cp = buffer, "%s;", mp -> m_gname);
  2054.       else
  2055.           cp = adrformat (mp);
  2056. --- 970,976 ----
  2057.       if (*aka && mp -> m_type != UUCPHOST && !mp -> m_pers)
  2058.       mp -> m_pers = getcpy (aka);
  2059.       if (format) {
  2060. !     if (mp -> m_gname)
  2061.           (void) sprintf (cp = buffer, "%s;", mp -> m_gname);
  2062.       else
  2063.           cp = adrformat (mp);
  2064. ***************
  2065. *** 1037,1053 ****
  2066.       int     len;
  2067.       char   *cp;
  2068.   
  2069. !     if (!fill_in && (flags & HBCC))
  2070.       return;
  2071.   
  2072.       if (!nameoutput) {
  2073.       fprintf (out, "%s: ", name);
  2074.       linepos += (nameoutput = strlen (name) + 2);
  2075. -     if (fill_in)
  2076. -         linepos -= strlen (group);
  2077.       }
  2078.   
  2079. !     cp = fill_in ? group : concat (group, ";", NULLCP);
  2080.       len = strlen (cp);
  2081.   
  2082.       if (linepos > nameoutput)
  2083. --- 1004,1018 ----
  2084.       int     len;
  2085.       char   *cp;
  2086.   
  2087. !     if (flags & HBCC)
  2088.       return;
  2089.   
  2090.       if (!nameoutput) {
  2091.       fprintf (out, "%s: ", name);
  2092.       linepos += (nameoutput = strlen (name) + 2);
  2093.       }
  2094.   
  2095. !     cp = concat (group, ";", NULLCP);
  2096.       len = strlen (cp);
  2097.   
  2098.       if (linepos > nameoutput)
  2099. ***************
  2100. *** 1190,1199 ****
  2101.       adios (bccfil, "unable to create");
  2102.       (void) chmod (bccfil, 0600);
  2103.   
  2104. !     fprintf (out, "Date: %s\n", dtime (&clock));
  2105.       if (msgid)
  2106.       fprintf (out, "Message-ID: <%d.%ld@%s>\n",
  2107. !         getpid (), clock, LocalName ());
  2108.       fprintf (out, "From: %s\n", signature);
  2109.       if (subject)
  2110.       fprintf (out, "Subject: %s", subject);
  2111. --- 1155,1164 ----
  2112.       adios (bccfil, "unable to create");
  2113.       (void) chmod (bccfil, 0600);
  2114.   
  2115. !     fprintf (out, "Date: %s\n", dtime (&tclock));
  2116.       if (msgid)
  2117.       fprintf (out, "Message-ID: <%d.%ld@%s>\n",
  2118. !         getpid (), tclock, LocalName ());
  2119.       fprintf (out, "From: %s\n", signature);
  2120.       if (subject)
  2121.       fprintf (out, "Subject: %s", subject);
  2122. ***************
  2123. *** 2513,2519 ****
  2124.       pstat = signal (SIGPIPE, SIG_IGN);
  2125.       if (from) {            /* no mail filtering, so... */
  2126.       (void) sprintf (buffer, "From %s %.24s remote from %s\n",
  2127. !         getusr (), ctime (&clock), SystemName ());
  2128.       i = strlen (buffer);
  2129.       if (fwrite (buffer, sizeof *buffer, i, fp) != i)
  2130.           goto oops;
  2131. --- 2478,2484 ----
  2132.       pstat = signal (SIGPIPE, SIG_IGN);
  2133.       if (from) {            /* no mail filtering, so... */
  2134.       (void) sprintf (buffer, "From %s %.24s remote from %s\n",
  2135. !         getusr (), ctime (&tclock), SystemName ());
  2136.       i = strlen (buffer);
  2137.       if (fwrite (buffer, sizeof *buffer, i, fp) != i)
  2138.           goto oops;
  2139. ***************
  2140. *** 2599,2605 ****
  2141.       register struct mailname *lp;
  2142.   
  2143.       naddrs = 0;
  2144. !     if (nm_init (getusr (), &clock) == NOTOK) {
  2145.       for (lp = netaddrs.m_next; lp; lp = lp -> m_next)
  2146.           if (lp -> m_bcc ? bccque : !bccque)
  2147.           fprintf (stderr, "  %s at %s: unable to get queue file\n",
  2148. --- 2564,2570 ----
  2149.       register struct mailname *lp;
  2150.   
  2151.       naddrs = 0;
  2152. !     if (nm_init (getusr (), &tclock) == NOTOK) {
  2153.       for (lp = netaddrs.m_next; lp; lp = lp -> m_next)
  2154.           if (lp -> m_bcc ? bccque : !bccque)
  2155.           fprintf (stderr, "  %s at %s: unable to get queue file\n",
  2156. *** ../mh-6.7-dist/uip/scan.c    Fri Dec 14 13:26:10 1990
  2157. --- uip/scan.c    Thu Jan 23 15:06:54 1992
  2158. ***************
  2159. *** 1,6 ****
  2160.   /* scan.c - display a one-line "scan" listing */
  2161.   #ifndef    lint
  2162. ! static char ident[] = "@(#)$Id: scan.c,v 1.8 90/04/05 14:59:58 sources Exp $";
  2163.   #endif    lint
  2164.   
  2165.   #include "../h/mh.h"
  2166. --- 1,6 ----
  2167.   /* scan.c - display a one-line "scan" listing */
  2168.   #ifndef    lint
  2169. ! static char ident[] = "@(#)$Id: scan.c,v 1.9 1992/01/23 23:06:45 jromine Exp $";
  2170.   #endif    lint
  2171.   
  2172.   #include "../h/mh.h"
  2173. ***************
  2174. *** 204,210 ****
  2175.   
  2176.       m_unknown (in);
  2177.       for (msgnum = 1; ; ++msgnum) {
  2178. !         state = scan (in, msgnum, -1, nfs, width, 0, hdrflag, 0L, 1);
  2179.           if (state != SCNMSG && state != SCNENC)
  2180.               break;
  2181.       }
  2182. --- 204,211 ----
  2183.   
  2184.       m_unknown (in);
  2185.       for (msgnum = 1; ; ++msgnum) {
  2186. !         state = scan (in, msgnum, -1, nfs, width, 0,
  2187. !             hdrflag ? file : (char *)0, 0L, 1);
  2188.           if (state != SCNMSG && state != SCNENC)
  2189.               break;
  2190.       }
  2191. ***************
  2192. *** 234,247 ****
  2193.           continue;
  2194.           }
  2195.   
  2196.           if (hdrflag) {
  2197.           (void) time (&clock);
  2198.           printf ("Folder %-32s%s\n\n", folder,
  2199.               dasctime (dlocaltime (&clock), TW_NULL));
  2200.           }
  2201.           switch (state = scan (in, msgnum, 0, nfs, width,
  2202.               msgnum == mp -> curmsg,
  2203. !             hdrflag, 0L, 1)) {
  2204.           case SCNMSG: 
  2205.           case SCNENC: 
  2206.           case SCNERR: 
  2207. --- 235,250 ----
  2208.           continue;
  2209.           }
  2210.   
  2211. + #ifndef    JLR
  2212.           if (hdrflag) {
  2213.           (void) time (&clock);
  2214.           printf ("Folder %-32s%s\n\n", folder,
  2215.               dasctime (dlocaltime (&clock), TW_NULL));
  2216.           }
  2217. + #endif    /* JLR */
  2218.           switch (state = scan (in, msgnum, 0, nfs, width,
  2219.               msgnum == mp -> curmsg,
  2220. !             hdrflag ? folder : (char *)0, 0L, 1)) {
  2221.           case SCNMSG: 
  2222.           case SCNENC: 
  2223.           case SCNERR: 
  2224. *** ../mh-6.7-dist/uip/scansbr.c    Fri Dec 14 13:26:10 1990
  2225. --- uip/scansbr.c    Wed Jan 29 16:11:38 1992
  2226. ***************
  2227. *** 1,6 ****
  2228.   /* scansbr.c - routines to help scan along... */
  2229.   #ifndef    lint
  2230. ! static char ident[] = "@(#)$Id: scansbr.c,v 1.5 90/04/05 14:57:59 sources Exp $";
  2231.   #endif    lint
  2232.   
  2233.   #include "../h/mh.h"
  2234. --- 1,6 ----
  2235.   /* scansbr.c - routines to help scan along... */
  2236.   #ifndef    lint
  2237. ! static char ident[] = "@(#)$Id: scansbr.c,v 1.7 1992/01/30 00:11:23 jromine Exp $";
  2238.   #endif    lint
  2239.   
  2240.   #include "../h/mh.h"
  2241. ***************
  2242. *** 15,21 ****
  2243.   
  2244.   
  2245.   #define MAXSCANL 256        /* longest possible scan line */
  2246. ! #define SBUFSIZ 256        /* buffer size for content part of header
  2247.                    * fields.  We want this to be large
  2248.                    * enough so that we don't do a lot of
  2249.                    * extra FLDPLUS calls on m_getfld but
  2250. --- 15,21 ----
  2251.   
  2252.   
  2253.   #define MAXSCANL 256        /* longest possible scan line */
  2254. ! #define SBUFSIZ 512        /* buffer size for content part of header
  2255.                    * fields.  We want this to be large
  2256.                    * enough so that we don't do a lot of
  2257.                    * extra FLDPLUS calls on m_getfld but
  2258. ***************
  2259. *** 28,33 ****
  2260. --- 28,36 ----
  2261.   /*   */
  2262.   
  2263.   static struct format *fmt;
  2264. + #ifdef JLR
  2265. + static struct format *fmt_top;
  2266. + #endif /* JLR */
  2267.   
  2268.   static struct comp *datecomp;        /* pntr to "date" comp */
  2269.   static struct comp *bodycomp;        /* pntr to "body" pseudo-comp 
  2270. ***************
  2271. *** 53,65 ****
  2272.   
  2273.   /* ARGSUSED */
  2274.   
  2275. ! int     scan (inb, innum, outnum, nfs, width, curflg, header, size, noisy)
  2276. ! char    *nfs;
  2277.   int     innum,
  2278.           outnum,
  2279.       width,
  2280.           curflg,
  2281. -         header,
  2282.       noisy;
  2283.   long    size;
  2284.   register FILE   *inb;
  2285. --- 56,68 ----
  2286.   
  2287.   /* ARGSUSED */
  2288.   
  2289. ! int     scan (inb, innum, outnum, nfs, width, curflg, folder, size, noisy)
  2290. ! char    *nfs,
  2291. !     *folder;
  2292.   int     innum,
  2293.           outnum,
  2294.       width,
  2295.           curflg,
  2296.       noisy;
  2297.   long    size;
  2298.   register FILE   *inb;
  2299. ***************
  2300. *** 92,99 ****
  2301. --- 95,108 ----
  2302.           (void) umask( ~ m_gmprot() );
  2303.   
  2304.       ncomps = fmt_compile (nfs, &fmt) + 1;
  2305. + #ifdef JLR
  2306. +     fmt_top = fmt;
  2307. + #endif JLR
  2308.       FINDCOMP(bodycomp, "body");
  2309.       FINDCOMP(datecomp, "date");
  2310. +     FINDCOMP(cptr, "folder");
  2311. +     if (cptr && folder)
  2312. +         cptr->c_text = folder;
  2313.       FINDCOMP(cptr, "encrypted");
  2314.       if (!cptr)
  2315.           if (cptr = (struct comp *) calloc (1, sizeof *cptr)) {
  2316. ***************
  2317. *** 285,291 ****
  2318. --- 294,306 ----
  2319.           }
  2320.           }
  2321.       }
  2322. + #ifndef JLR
  2323.       (void) fmtscan (fmt, scanl, slwidth, dat);
  2324. + #else JLR
  2325. +     fmt = fmtscan (fmt, scanl, slwidth, dat);
  2326. +     if (!fmt)
  2327. +         fmt = fmt_top;        /* reset for old format files */
  2328. + #endif JLR
  2329.   
  2330.       if (bodycomp)
  2331.           bodycomp->c_text = saved_c_text;
  2332. *** /dev/null    Thu Jan 30 13:49:21 1992
  2333. --- uip/sendmail.c    Fri Jan 24 14:36:30 1992
  2334. ***************
  2335. *** 0 ****
  2336. --- 1,556 ----
  2337. + /* sendmail.c - */
  2338. + #ifndef    lint
  2339. + static char Id[] = "$Id: sendmail.c,v 1.5 1992/01/24 22:36:27 jromine Exp $";
  2340. + #endif
  2341. + /*
  2342. +  **  A Sendmail fake.
  2343. +  *
  2344. +  * Contributed by Scott Erickson <erickson@ics.uci.edu>
  2345. +  */
  2346. + /* Include files glommed from post.c */
  2347. + #include "../h/mh.h"
  2348. + #include "../h/addrsbr.h"
  2349. + #include "../h/aliasbr.h"
  2350. + #include "../h/dropsbr.h"
  2351. + #include "../zotnet/tws.h"
  2352. + #ifndef MMDFMTS
  2353. + #include <ctype.h>
  2354. + #include <errno.h>
  2355. + #include <setjmp.h>
  2356. + #include <stdio.h>
  2357. + #include <sys/types.h>
  2358. + #else   MMDFMTS
  2359. + #include "../mts/mmdf/util.h"
  2360. + #include "../mts/mmdf/mmdf.h"
  2361. + #endif  MMDFMTS
  2362. + #include "../zotnet/mts.h"
  2363. + #ifdef  MHMTS
  2364. + #ifndef V7
  2365. + #include <sys/ioctl.h>
  2366. + #endif  not V7
  2367. + #include <sys/stat.h>
  2368. + #endif  MHMTS
  2369. + #ifdef  SENDMTS
  2370. + #include "../mts/sendmail/smail.h"
  2371. + #undef  MF
  2372. + #endif  SENDMTS
  2373. + #include <signal.h>
  2374. + char    *SMTPSRVR = "smtpsrvr";
  2375. + char    msgfname[50];    /* name of message file */
  2376. + char    *FullName;    /* sender's full name */
  2377. + char    *from;        /* sender's mail address */
  2378. + int    verbose;
  2379. + int    verify;
  2380. + int    extract;
  2381. + int    dodist;
  2382. + int    rewritefrom;
  2383. + int    status;        /* return value from procedures */
  2384. + static int childid;    /* id from smtp child process */
  2385. + int    die();
  2386. + long    lclock = 0L;    /* the time we started (more or less) */
  2387. + FILE *fp;        /* file pointer for message file */
  2388. + extern FILE *tmpfile();
  2389. + static struct swit switches[] = {
  2390. + #define ARPASW    0
  2391. +     "ba", -2,
  2392. + #define DAEMONSW  1
  2393. +     "bd", -2,
  2394. + #define INITALSW  2
  2395. +     "bi", -2,
  2396. + #define DELIVSW   3
  2397. +     "bm", -2,
  2398. + #define QSUMSW    4
  2399. +     "bp", -2,
  2400. + #define SMTPSW    5
  2401. +     "bs", -2,
  2402. + #define ADRTSTSW  6
  2403. +     "bt", -2,
  2404. + #define ADRVRFSW  7
  2405. +     "bv", -2,
  2406. + #define CFGFRZSW  8
  2407. +     "bz", -2,
  2408. + #define ALTCFGSW  9
  2409. +     "C", -1,
  2410. + #define DBGVALSW 10
  2411. +     "d", -1,
  2412. + #define FULLSW   11
  2413. +     "F", -1,
  2414. + #define FROMSW   12
  2415. +     "f", -1,
  2416. + #define HOPCNTSW 13
  2417. +     "h", -1,
  2418. + #define MSGIDSW  14
  2419. +     "M", -1,
  2420. + #define NOALISW  15
  2421. +     "n", -1,
  2422. + #define QTIMESW  16
  2423. +     "q", -1,
  2424. + #define OBSFRMSW 17
  2425. +     "r", -1,
  2426. + #define EXTHDRSW 18
  2427. +     "t", -1,
  2428. + #define VERBSW     19
  2429. +     "v", -1,
  2430. + #define ALTALISW 20
  2431. +     "oA", -2,
  2432. + #define NOCONSW   21
  2433. +     "oc", -2,
  2434. + #define DLVMODSW 22
  2435. +     "od", -2,
  2436. + #define NEWALISW 23
  2437. +     "oD", -2,
  2438. + #define ERRMODSW 24
  2439. +     "oe", -2,
  2440. + #define TMPMODSW 25
  2441. +     "oF", -2,
  2442. + #define UFROMSW  26
  2443. +     "of", -2,
  2444. + #define GIDSW    27
  2445. +     "og", -2,
  2446. + #define HLPFILSW 28
  2447. +     "oH", -2,
  2448. + #define NODOTSW  29
  2449. +     "oi", -2,
  2450. + #define LOGLEVSW 30
  2451. +     "oL", -2,
  2452. + #define MEOKSW   31
  2453. +     "om", -2,
  2454. + #define OLDHDRSW 32
  2455. +     "oo", -2,
  2456. + #define QDIRSW   33
  2457. +     "oQ", -2,
  2458. + #define RTMOUTSW 34
  2459. +     "or", -2,
  2460. + #define SFILESW  35
  2461. +     "oS", -2,
  2462. + #define QMSGSW   36
  2463. +     "os", -2,
  2464. + #define MTMOUTSW 37
  2465. +     "oT", -2,
  2466. + #define TZSW     38
  2467. +     "ot", -2,
  2468. + #define UIDSW    39
  2469. +     "ou", -2,
  2470. +     
  2471. +     NULL, NULL
  2472. +     };
  2473. + /*ARGSUSED*/
  2474. + main(argc, argv) int argc; char **argv; {
  2475. +     register char *cp;
  2476. +     char **argp = argv + 1;
  2477. +     
  2478. +     invo_name = r1bindex (argv[0], '/');
  2479. +     mts_init(argv[0]);
  2480. +     
  2481. +     if (signal(SIGINT, SIG_IGN) != SIG_IGN)
  2482. +     (void) signal(SIGINT, die);
  2483. +     if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
  2484. +     (void) signal(SIGHUP, die);
  2485. +     (void) signal(SIGTERM, die);
  2486. +     (void) signal(SIGPIPE, die);
  2487. +     
  2488. +     FullName = getfullname();
  2489. +     from = adrsprintf(NULLCP,NULLCP);
  2490. +     (void) time (&lclock);
  2491. +     
  2492. +     while ( (cp = *argp) &&  *cp == '-' ) {
  2493. +     argp++;
  2494. +     switch (smatch ( ++cp, switches )) {
  2495. +     case ARPASW:    /* smtp on stdin */
  2496. +     case SMTPSW:    /* smtp on stdin */
  2497. +         smtp();
  2498. +         exit(98);    /* should never happen */
  2499. +         
  2500. +     case DELIVSW:    /* just send mail */
  2501. +         continue;
  2502. +         
  2503. +     case ADRVRFSW:    /* verify mode */
  2504. +         verify = 1;
  2505. +         continue;
  2506. +         
  2507. +     case FROMSW:    /* from address */
  2508. +     case OBSFRMSW:    /* obsolete -f flag */
  2509. +         if (*(++cp) == '\0' &&
  2510. +         (!(cp = *argp++) || *cp == '-'))
  2511. +         adios (NULLCP, "missing argument to %s", argp[-2]);
  2512. +         /* At this point, cp points to the from name */
  2513. +         if (rewritefrom) {
  2514. +         adios (NULLCP, "More than one \"from\" person");
  2515. +         continue;
  2516. +         }
  2517. +         from = cp;
  2518. +         rewritefrom = 1;
  2519. +         continue;
  2520. +         
  2521. +     case EXTHDRSW:    /* read recipients from message */
  2522. +         extract = 1;
  2523. +         continue;
  2524. +         
  2525. +     case VERBSW:    /* give blow-by-blow description */
  2526. +         verbose = 1;
  2527. +         continue;
  2528. +         
  2529. +         /* These switches have no args. */
  2530. +     case QMSGSW:    /* always queue the message */
  2531. +     case DAEMONSW:    /* run as a daemon & wait for SMTP */
  2532. +     case INITALSW:    /* initialize the alias database */
  2533. +     case QSUMSW:    /* print summary of mail queue */
  2534. +     case ADRTSTSW:    /* test the addresses to debug config file */
  2535. +     case CFGFRZSW:    /* create the configuration freeze file */
  2536. +     case NOALISW:    /* do not do aliasing */
  2537. +     case NOCONSW:    /* do not initiate immediate host connection */
  2538. +     case NEWALISW:    /* run newaliases to rebuild db */
  2539. +     case UFROMSW:    /* save UNIX-style From lines at front of msg*/
  2540. +     case NODOTSW:    /* dots on line are not msg terminators */
  2541. +     case MEOKSW:    /* ok to send to me if I'm in an alias */
  2542. +     case OLDHDRSW:    /* msg may have old-style headers */
  2543. +         continue;
  2544. +         
  2545. +         /* These switches have string args. */
  2546. +     case ALTALISW:    /* use alternate alias file */
  2547. +     case ALTCFGSW:    /* use alternate configuration file */
  2548. +     case DBGVALSW:    /* set the debug value */
  2549. +     case FULLSW:    /* set full name */
  2550. +     case MSGIDSW:    /* try to deliver queued msg with msg-id */
  2551. +     case QTIMESW:    /* interval between queue passes */
  2552. +     case DLVMODSW:    /* set the delivery mode */
  2553. +     case ERRMODSW:    /* set the error mode */
  2554. +     case TMPMODSW:    /* the mode to use when creating tmp files */
  2555. +     case HLPFILSW:    /* the SMTP help file */
  2556. +     case QDIRSW:    /* directory into which to queue messages */
  2557. +     case RTMOUTSW:    /* timeout on reads */
  2558. +     case SFILESW:    /* save statistics in this file */
  2559. +     case MTMOUTSW:    /* timeout on messages in the queue */
  2560. +     case TZSW:    /* set the name of the timezone */
  2561. +         if (*(++cp) == '\0' &&
  2562. +         (!(cp = *argp++) || *cp == '-'))
  2563. +         adios (NULLCP, "missing argument to %s", argp[-2]);
  2564. +         /* At this point, cp points to the argument */
  2565. +         continue;    /* Ignore */
  2566. +         
  2567. +         /* These switches have numeric args. */
  2568. +     case HOPCNTSW:    /* hop count */
  2569. +     case GIDSW:    /* gid when calling mailers */
  2570. +     case LOGLEVSW:    /* the log level */
  2571. +     case UIDSW:    /* uid when calling mailers */
  2572. +         if (*(++cp) == '\0' &&
  2573. +         (!(cp = *argp++) || *cp == '-'))
  2574. +         adios (NULLCP, "missing argument to %s", argp[-2]);
  2575. +         /* At this point, cp points to the numeric arg */
  2576. +         if (!isdigit(*cp))
  2577. +         adios (NULLCP, "non-numeric argument to %s", argp[-2]);
  2578. +         continue;    /* Ignore */
  2579. +     }
  2580. +     }
  2581. +     
  2582. +     (void) setuid(getuid());
  2583. +     
  2584. +     if (verify && extract)
  2585. +     adios (NULLCP, "mode not supported on header components");
  2586. +     
  2587. +     if (*argp == NULL && !extract)
  2588. +     adios (NULLCP, "usage: /usr/lib/sendmail [flags] addr...");
  2589. +     
  2590. +     strcpy (msgfname, "/tmp/sendmhXXXXXX");
  2591. +     if ( mktemp(msgfname) == NULL )
  2592. +     adios (msgfname, "can't create msg file ");
  2593. +     
  2594. +     if ( (fp = fopen(msgfname,"w") ) == NULL ) {
  2595. +     adios (msgfname, "error opening ");
  2596. +     }
  2597. +     
  2598. +     doheader(argp);
  2599. +     if ( verify ) {
  2600. +     (void) fclose(fp);
  2601. +     status = doverify();
  2602. +     removemsg();
  2603. +     exit ( status ) ;
  2604. +     }
  2605. +     dobody();
  2606. +     status = sendfile();
  2607. +     removemsg();
  2608. +     exit ( status );
  2609. + }
  2610. + static removemsg() {
  2611. +   puts(msgfname);
  2612. +   /*
  2613. +   if ( unlink(msgfname) != 0 )
  2614. +       perror("unlink");
  2615. +     */
  2616. + }
  2617. + doheader(argp) char **argp; {
  2618. +     char    line[BUFSIZ];
  2619. +     int        gotdate, gotfrom, gotsender, gotto;
  2620. +     
  2621. +     /* if we're not extracting the headers from the message, then we
  2622. +      * need to check to see if we need to do a "send" or a "dist".
  2623. +      */
  2624. +     
  2625. +     if ( !extract ) {
  2626. +     /* If we're doing a verify, just create a "To:" header. */
  2627. +     if ( ! verify ) {
  2628. +         gotdate = gotfrom = gotto = gotsender = dodist = 0;
  2629. +         while (fgets (line, BUFSIZ, stdin) != NULL) {
  2630. +         if (line[0] == '\n')        /* end of header */
  2631. +             break;
  2632. +         if ( !isheader(line) )
  2633. +             break;
  2634. +         /* if any of the following headers are present, then we
  2635. +          * want to do a dist.
  2636. +          */
  2637. +         if ( !gotdate && uprf(line, "date") )
  2638. +             gotdate = dodist = 1;
  2639. +         else if ( !gotto && (uprf(line, "to") || uprf(line, "cc")) )
  2640. +             gotto = dodist = 1;
  2641. +         else if ( uprf(line, "message-id") )
  2642. +             dodist = 1;
  2643. +         else if ( !gotsender && uprf(line, "sender") )
  2644. +             gotsender = dodist = 1;
  2645. +         
  2646. +         else if ( uprf ( line, "resent-" ) ) {
  2647. +             dodist = 1;
  2648. +             (void) fputs("Prev-", fp);
  2649. +         }
  2650. +         
  2651. +         /* See if we are re-writing the from line */
  2652. +         if ( uprf(line, "from") ) {
  2653. +             gotfrom = 1;
  2654. +             if ( rewritefrom )
  2655. +             dofrom();
  2656. +             else
  2657. +             (void) fputs(line,fp);
  2658. +         }
  2659. +         else
  2660. +             (void) fputs(line,fp);
  2661. +         }
  2662. +     }
  2663. +     /* Now, generate a "to" line.  The first line is easy.
  2664. +      * Write the rest of the lines with a newline/tab so that we
  2665. +      * don't accidentally write a line that's too long to be parsed
  2666. +      * by post.
  2667. +      */
  2668. +     (void) fprintf (fp, "%sTo: %s", (dodist ? "Resent-" : "" ), *argp++);
  2669. +     while ( *argp )
  2670. +         (void) fprintf ( fp, ",\n\t%s", *argp++ );
  2671. +     (void) fputs("\n",fp);
  2672. +     /* If we're doing a dist, we must have a "Date:" and "From:" field.
  2673. +      */
  2674. +     if ( dodist ) {
  2675. +         if ( !gotdate )
  2676. +         (void) fprintf (fp, "Date: %s\n", dtime (&lclock));
  2677. +         if ( !gotfrom )
  2678. +         dofrom();
  2679. +     }
  2680. + #ifdef    MMDFI            /* sigh */
  2681. +     if ( !gotsender )
  2682. +         (void) fprintf (fp, "Sender: %s\n", from);
  2683. + #endif    MMDFI
  2684. +     } else {    /* we're verifying, so just pass everything through */
  2685. +     while (fgets (line, BUFSIZ, stdin) != NULL) {
  2686. +         if (line[0] == '\n')        /* end of header */
  2687. +         break;
  2688. +         
  2689. +         if ( rewritefrom && uprf(line, "from"))
  2690. +         dofrom();
  2691. +         else
  2692. +         (void) fputs(line,fp);
  2693. +     }
  2694. +     }
  2695. +     /* At this point, line is either a newline (end of header) or the
  2696. +      * first line of the body (poorly formatted message).  If line
  2697. +      * contains a line of body from a poorly formatted message, then
  2698. +      * print a newline to separate the header correctly, then print
  2699. +      * the body line.
  2700. +      */
  2701. +     if ( line[0] != '\n' )    /* i.e. a "body" line */
  2702. +     (void) fputc('\n', fp);
  2703. +     (void) fputs(line, fp);
  2704. + }
  2705. + static isheader(s) char *s; {
  2706. +     register char *cp;
  2707. +     /* If the first character is a space, assume a continuation of a header */
  2708. +     if ( isspace(*s) )
  2709. +     return 1;
  2710. +     /* If there's no ':', it's not a header */
  2711. +     if ( (cp = index(s,':')) == NULL )
  2712. +     return 0;
  2713. +     /* If there's a space between BOL and ':', it's not a header */
  2714. +     while ( s < cp ) {
  2715. +     if ( isspace(*s) )
  2716. +         return 0;
  2717. +     s++;
  2718. +     }
  2719. +     return 1;
  2720. + }
  2721. + /* This procedure does the verify and returns the status */
  2722. + doverify() {
  2723. +     char *command, buf[BUFSIZ], *bp;
  2724. +     FILE *verfp, *popen();
  2725. +     
  2726. +     /* set up the command line for post */
  2727. +     if ( (command = (char *)malloc((strlen(postproc) +
  2728. +                     strlen(" -whom -check -verbose ") +
  2729. +                     strlen(msgfname) + 1 )*sizeof(char)))
  2730. +     == NULL ) {
  2731. +     perror("malloc");
  2732. +     return NOTOK;
  2733. +     }
  2734. +     
  2735. +     (void) strcpy(command,postproc);
  2736. +     (void) strcat(command," -whom -check ");
  2737. +     if ( verbose )
  2738. +     (void) strcat(command, "-verbose " );
  2739. +     (void) strcat(command, msgfname);
  2740. +     
  2741. +     /* open up the pipe */
  2742. +     if ( (verfp = popen(command,"r")) == NULL )
  2743. +     return NOTOK;
  2744. +     
  2745. +     while ( fgets(buf, BUFSIZ, verfp) != NULL )
  2746. +     /* sendmail returns:
  2747. +      *   address:  result
  2748. +      * so we need to strip the extra post headers.
  2749. +      */
  2750. +     if ( verbose ) {
  2751. +         bp = buf;
  2752. +         while (isspace(*bp))
  2753. +         bp++;
  2754. +         if ( *bp != '-' )
  2755. +         (void) fputs(bp,stdout);
  2756. +     }
  2757. +     
  2758. +     /* return the error status of post */
  2759. +     return( pclose(verfp) >> 8 );
  2760. + }
  2761. + static sendfile() {
  2762. +     char *command, buf[BUFSIZ];
  2763. +     FILE *verfp, *popen();
  2764. +     
  2765. +     /* set up the command line for post */
  2766. +     if ( (command = (char *)malloc((strlen(postproc) +
  2767. +                     strlen(" -dist -verbose ") +
  2768. +                     strlen(msgfname) + 1 )*sizeof(char)))
  2769. +     == NULL ) {
  2770. +     perror("malloc");
  2771. +     return NOTOK;
  2772. +     }
  2773. +     
  2774. +     (void) strcpy(command,postproc);
  2775. +     (void) strcat(command," ");
  2776. +     if ( verbose )
  2777. +     (void) strcat(command, "-verbose " );
  2778. +     if ( dodist )
  2779. +     (void) strcat(command, "-dist " );
  2780. +     (void) strcat(command, msgfname);
  2781. +     
  2782. +     /* open up the pipe */
  2783. +     if ( (verfp = popen(command,"r")) == NULL )
  2784. +     return NOTOK;
  2785. +     
  2786. +     while ( fgets(buf, BUFSIZ, verfp) != NULL )
  2787. +     (void) fputs(buf,stdout);
  2788. +     /* return the error status of post */
  2789. +     return( pclose(verfp) >> 8 );
  2790. + }
  2791. + dofrom() {
  2792. +     char    line[128];
  2793. +     
  2794. +     if (FullName)
  2795. +     (void) sprintf(line, "From: %s <%s>\n", FullName, from);
  2796. +     else
  2797. +     (void) sprintf(line, "From: %s\n", from);
  2798. +     (void) fputs(line, fp);
  2799. + }
  2800. + dobody() {
  2801. +     register int    i;
  2802. +     char    buffer[BUFSIZ];
  2803. +     
  2804. +     while (!feof (stdin) && !ferror (stdin) &&
  2805. +        (i = fread (buffer, sizeof (char), sizeof (buffer), stdin)) > 0)
  2806. +     if (fwrite (buffer, sizeof (char), i , fp) != i )
  2807. +         adios (NULLCP, "Problem writing body");
  2808. +     
  2809. +     if (ferror (stdin))
  2810. +     adios (NULLCP, "Problem reading body");
  2811. +     
  2812. +     if ( fclose(fp) != 0 )
  2813. +     adios (NULLCP, "problem ending submission");
  2814. + }
  2815. + int silentdie();
  2816. + smtp()
  2817. + {
  2818. +     int sd,len;
  2819. +     char buf[BUFSIZ], response[BUFSIZ];
  2820. +     if ((sd = client(NULLCP, "tcp", "smtp", 0, response)) == NOTOK)
  2821. +     adios (NULLCP, "cannot open smtp client process");
  2822. +     (void) signal(SIGCHLD, silentdie);
  2823. +     switch ((childid = fork())) {
  2824. +     case NOTOK:
  2825. +         adios (NULLCP, "unable to fork smtp process");
  2826. +     
  2827. +     case OK:    /* i.e. child */
  2828. +         (void) dup2(sd,0);
  2829. +         break;
  2830. +     default:    /* i.e. parent */
  2831. +         (void) dup2(sd,1);
  2832. +         break;
  2833. +     }
  2834. +     while ( (len = read(0, buf, BUFSIZ)) > 0)
  2835. +     (void) write (1, buf, len);
  2836. +     if (childid)
  2837. +     (void) kill(childid, SIGHUP);
  2838. +     exit(9);
  2839. + }
  2840. + /* ARGSUSED */
  2841. + die(sig)
  2842. + int sig;
  2843. + {
  2844. +     if (fp) {
  2845. +     (void) fclose(fp);
  2846. +     (void) unlink(msgfname);
  2847. +     }
  2848. +     if (sig != SIGHUP)
  2849. +     (void) fprintf(stderr, "sendmail: dying from signal %d\n", sig);
  2850. +     exit(99);
  2851. + }
  2852. + /* ARGSUSED */
  2853. + silentdie(sig)
  2854. + int sig;
  2855. + {
  2856. +     pidwait (childid, OK);
  2857. +     exit(0);
  2858. + }
  2859. *** ../mh-6.7-dist/uip/slocal.c    Wed Jan 29 17:00:26 1992
  2860. --- uip/slocal.c    Wed Jan 29 16:06:08 1992
  2861. ***************
  2862. *** 1,6 ****
  2863.   /* slocal.c - MH style mailer to write to a local user's mailbox */
  2864.   #ifndef    lint
  2865. ! static char ident[] = "@(#)$Id: slocal.c,v 1.9 91/01/10 14:39:00 mh Exp $";
  2866.   #endif    lint
  2867.   
  2868.   /* This program implements mail delivery in the MH/MMDF style.
  2869. --- 1,6 ----
  2870.   /* slocal.c - MH style mailer to write to a local user's mailbox */
  2871.   #ifndef    lint
  2872. ! static char ident[] = "@(#)$Id: slocal.c,v 1.10 1992/01/30 00:06:00 jromine Exp $";
  2873.   #endif    lint
  2874.   
  2875.   /* This program implements mail delivery in the MH/MMDF style.
  2876. ***************
  2877. *** 505,511 ****
  2878. --- 505,515 ----
  2879.           if (!uleq (action, "file"))
  2880.               continue;    /* else fall */
  2881.           case '>': 
  2882. + #ifndef    RPATHS
  2883.           status = usr_file (fd, string,  from);    /* UUCP format? */
  2884. + #else
  2885. +         status = usr_file (fd, string,  NULLCP);
  2886. + #endif
  2887.           break;
  2888.   
  2889.           case 'd': 
  2890. *** ../mh-6.7-dist/uip/vmh.c    Fri Dec 14 13:26:13 1990
  2891. --- uip/vmh.c    Thu Jan 23 16:05:15 1992
  2892. ***************
  2893. *** 1,6 ****
  2894.   /* vmh.c - visual front-end to mh */
  2895.   #ifndef    lint
  2896. ! static char ident[] = "@(#)$Id: vmh.c,v 1.6 90/04/05 15:00:17 sources Exp $";
  2897.   #endif    lint
  2898.   #ifdef    SYS5
  2899.   /*
  2900. --- 1,6 ----
  2901.   /* vmh.c - visual front-end to mh */
  2902.   #ifndef    lint
  2903. ! static char ident[] = "@(#)$Id: vmh.c,v 1.7 1992/01/24 00:05:13 jromine Exp $";
  2904.   #endif    lint
  2905.   #ifdef    SYS5
  2906.   /*
  2907. ***************
  2908. *** 24,29 ****
  2909. --- 24,32 ----
  2910.    */
  2911.   
  2912.   #include <curses.h>
  2913. + #ifdef    ncr
  2914. + #define    _SYS_REG_H        /* NCR redefines "ERR" in <sys/reg.h> */
  2915. + #endif
  2916.   #undef    OK            /* tricky */
  2917.   #ifdef    TERMINFO
  2918.   #include <term.h>    /* variables describing terminal capabilities */
  2919. *** ../mh-6.7-dist/uip/whatnowsbr.c    Wed Jan 29 17:00:27 1992
  2920. --- uip/whatnowsbr.c    Thu Jan 30 14:40:03 1992
  2921. ***************
  2922. *** 1,6 ****
  2923.   /* whatnowsbr.c - the WhatNow shell */
  2924.   #ifndef    lint
  2925. ! static char ident[] = "@(#)$Id: whatnowsbr.c,v 1.10 91/01/23 15:43:31 mh Exp $";
  2926.   #endif    lint
  2927.   
  2928.   #include "../h/mh.h"
  2929. --- 1,6 ----
  2930.   /* whatnowsbr.c - the WhatNow shell */
  2931.   #ifndef    lint
  2932. ! static char ident[] = "@(#)$Id: whatnowsbr.c,v 1.12 1992/01/30 22:39:58 jromine Exp $";
  2933.   #endif    lint
  2934.   
  2935.   #include "../h/mh.h"
  2936. ***************
  2937. *** 335,341 ****
  2938.   
  2939.       default: 
  2940.           if (status = pidwait (pid, NOTOK)) {
  2941. ! #ifdef    SUNVIBUG
  2942.           if ((cp = r1bindex (*ed, '/'))
  2943.               && strcmp (cp, "vi") == 0
  2944.               && (status & 0x00ff) == 0)
  2945. --- 335,341 ----
  2946.   
  2947.       default: 
  2948.           if (status = pidwait (pid, NOTOK)) {
  2949. ! #ifdef    ATTVIBUG
  2950.           if ((cp = r1bindex (*ed, '/'))
  2951.               && strcmp (cp, "vi") == 0
  2952.               && (status & 0x00ff) == 0)
  2953. ***************
  2954. *** 354,360 ****
  2955.                   file);
  2956.           status = -2;    /* maybe "reedit ? -2 : -1"? */
  2957.           break;
  2958. ! #ifdef    SUNVIBUG
  2959.           }
  2960.   #endif
  2961.           }
  2962. --- 354,360 ----
  2963.                   file);
  2964.           status = -2;    /* maybe "reedit ? -2 : -1"? */
  2965.           break;
  2966. ! #ifdef    ATTVIBUG
  2967.           }
  2968.   #endif
  2969.           }
  2970. ***************
  2971. *** 786,801 ****
  2972.       int     pid;
  2973.       register int    vecp;
  2974.       char   *vec[MAXARGS];
  2975. - #ifdef    WP
  2976. -     char   *cp,
  2977. -         draft[BUFSIZ],
  2978. -         backup[BUFSIZ];
  2979. - #endif
  2980.   
  2981. - #ifdef    WP
  2982. -     (void) strcpy (draft, m_scratch (file, invo_name));
  2983. - #endif
  2984.       m_update ();
  2985.       (void) fflush (stdout);
  2986.   
  2987. --- 786,792 ----
  2988. ***************
  2989. *** 811,820 ****
  2990.           if (arg)
  2991.           while (*arg)
  2992.               vec[vecp++] = *arg++;
  2993. - #ifdef    WP
  2994. -         vec[vecp++] = "-fill-in";
  2995. -         vec[vecp++] = draft;
  2996. - #endif
  2997.           vec[vecp] = NULL;
  2998.   
  2999.           execvp (whomproc, vec);
  3000. --- 802,807 ----
  3001. ***************
  3002. *** 823,850 ****
  3003.           _exit (-1);        /* NOTREACHED */
  3004.   
  3005.       default: 
  3006. - #ifndef    WP
  3007.           return (pidwait (pid, NOTOK) & 0377 ? 1 : 0);
  3008. - #else
  3009. -         if (pidwait (pid, NOTOK)) {
  3010. -         (void) unlink (draft);
  3011. -         return 1;
  3012. -         }
  3013.           break;
  3014. - #endif
  3015.       }
  3016. - #ifdef    WP
  3017. -     if (rename (file, cp = m_backup (file)) == NOTOK) {
  3018. -     advise (cp, "unable to rename %s to", file);
  3019. -     (void) unlink (draft);
  3020. -     return 1;
  3021. -     }
  3022. -     if (rename (draft, file) == NOTOK) {
  3023. -     advise (file, "unable to rename %s to ", draft);
  3024. -     return 1;
  3025. -     }
  3026. -     return 0;
  3027. - #endif
  3028.   }
  3029. --- 810,816 ----
  3030. *** ../mh-6.7-dist/uip/whom.c    Fri Dec 14 13:26:14 1990
  3031. --- uip/whom.c    Thu Jan 30 14:40:04 1992
  3032. ***************
  3033. *** 1,6 ****
  3034.   /* whom.c - report who a message would go to */
  3035.   #ifndef    lint
  3036. ! static char ident[] = "@(#)$Id: whom.c,v 1.4 90/04/05 15:00:25 sources Exp $";
  3037.   #endif    lint
  3038.   
  3039.   #include "../h/mh.h"
  3040. --- 1,6 ----
  3041.   /* whom.c - report who a message would go to */
  3042.   #ifndef    lint
  3043. ! static char ident[] = "@(#)$Id: whom.c,v 1.5 1992/01/30 22:39:58 jromine Exp $";
  3044.   #endif    lint
  3045.   
  3046.   #include "../h/mh.h"
  3047. ***************
  3048. *** 38,46 ****
  3049.   #define    SNOOPSW    10
  3050.       "snoop", -5,
  3051.   
  3052. - #define    FILLSW    11
  3053. -     "fill-in file", -7,
  3054.       NULL, NULL
  3055.   };
  3056.   
  3057. --- 38,43 ----
  3058. ***************
  3059. *** 131,137 ****
  3060.           case ALIASW: 
  3061.           case CLIESW: 
  3062.           case SERVSW: 
  3063. -         case FILLSW:
  3064.               vec[vecp++] = --cp;
  3065.               if (!(cp = *argp++) || *cp == '-')
  3066.               adios (NULLCP, "missing argument to %s", argp[-2]);
  3067. --- 128,133 ----
  3068. *** ../mh-6.7-dist/zotnet/bboards/getbbent.c    Fri Dec 14 13:26:15 1990
  3069. --- zotnet/bboards/getbbent.c    Tue Aug  6 10:23:18 1991
  3070. ***************
  3071. *** 1,6 ****
  3072.   /* getbbent.c - subroutines for accessing the BBoards file */
  3073.   #ifndef    lint
  3074. ! static char ident[] = "@(#)$Id: getbbent.c,v 1.5 90/04/09 10:11:57 sources Exp $";
  3075.   #endif    lint
  3076.   
  3077.   /* LINTLIBRARY */
  3078. --- 1,6 ----
  3079.   /* getbbent.c - subroutines for accessing the BBoards file */
  3080.   #ifndef    lint
  3081. ! static char ident[] = "@(#)$Id: getbbent.c,v 1.5 1990/04/09 10:11:57 sources Exp jromine $";
  3082.   #endif    lint
  3083.   
  3084.   /* LINTLIBRARY */
  3085. ***************
  3086. *** 618,624 ****
  3087.   
  3088.   char    *getbberr () {
  3089.       return (BBErrors[0] ? BBErrors : NULL);
  3090. ! };
  3091.   
  3092.   /*   */
  3093.   
  3094. --- 618,624 ----
  3095.   
  3096.   char    *getbberr () {
  3097.       return (BBErrors[0] ? BBErrors : NULL);
  3098. ! }
  3099.   
  3100.   /*   */
  3101.   
  3102. *** ../mh-6.7-dist/zotnet/mf/mf.c    Fri Dec 14 13:26:16 1990
  3103. --- zotnet/mf/mf.c    Thu Jan 30 14:40:38 1992
  3104. ***************
  3105. *** 1,6 ****
  3106.   /* mf.c - mail filter subroutines */
  3107.   #ifndef    lint
  3108. ! static char ident[] = "@(#)$Id: mf.c,v 1.6 90/04/05 15:04:19 sources Exp $";
  3109.   #endif    lint
  3110.   
  3111.   #include "mf.h"
  3112. --- 1,6 ----
  3113.   /* mf.c - mail filter subroutines */
  3114.   #ifndef    lint
  3115. ! static char ident[] = "@(#)$Id: mf.c,v 1.7 1992/01/30 22:40:35 jromine Exp $";
  3116.   #endif    lint
  3117.   
  3118.   #include "mf.h"
  3119. ***************
  3120. *** 304,312 ****
  3121.   
  3122.   #define    QUOTE    '\\'
  3123.   
  3124. - #ifdef    WP
  3125. - #define    LX_WP    (-1)
  3126. - #endif
  3127.   #define    LX_END    0
  3128.   #define    LX_ERR    1
  3129.   #define    LX_ATOM    2
  3130. --- 304,309 ----
  3131. ***************
  3132. *** 360,381 ****
  3133.   
  3134.   static struct adrx  adrxs2;
  3135.   
  3136. - #ifdef    WP
  3137. - char   *concat ();
  3138. - extern int    do_wp;
  3139. - char   *wp_expand ();
  3140. - #endif
  3141.   /*   */
  3142.   
  3143.   struct adrx *getadrx (addrs)
  3144.   register char   *addrs;
  3145.   {
  3146. - #ifdef    WP
  3147. -     int        save_lex;
  3148. - #endif
  3149.       register char   *bp;
  3150.       register struct adrx *adrxp = &adrxs2;
  3151.   
  3152. --- 357,367 ----
  3153. ***************
  3154. *** 405,433 ****
  3155.           return NULL;
  3156.       }
  3157.   
  3158. - #ifdef    WP
  3159. -     bp = cp, save_lex = last_lex;
  3160. -     if (my_lex (adr) == LX_WP) {
  3161. -     register char *ep,
  3162. -               *fp;
  3163. -     if (fp = wp_expand (adr, err)) {
  3164. -         *bp = NULL;
  3165. -         ep = concat (dp, fp, cp, (char *) NULL);
  3166. -         cp = ep + strlen (dp), last_lex = save_lex;
  3167. -         free (dp);
  3168. -         dp = ep;
  3169. -         free (fp);
  3170. -     }
  3171. -     else {
  3172. -         ap = bp, save_lex = last_lex;
  3173. -         goto out;
  3174. -     }
  3175. -     }
  3176. -     else
  3177. -     cp = bp, last_lex = save_lex;
  3178. - #endif
  3179.       switch (parse_address ()) {
  3180.       case DONE:
  3181.           free (dp);
  3182. --- 391,396 ----
  3183. ***************
  3184. *** 452,460 ****
  3185.           break;
  3186.       }
  3187.   
  3188. - #ifdef    WP
  3189. - out: ;
  3190. - #endif
  3191.       if (err[0])
  3192.       for (;;) {
  3193.           switch (last_lex) {
  3194. --- 415,420 ----
  3195. ***************
  3196. *** 846,866 ****
  3197.       cp = NULL;
  3198.       return (last_lex = LX_END);
  3199.       }
  3200. - #ifdef    WP
  3201. -     if (do_wp && c == '<' && *cp == '<')
  3202. -     for (cp++;;)
  3203. -         switch (c = *cp++) {
  3204. -         case '>':
  3205. -             *bp = NULL;
  3206. -             cp++;
  3207. -             return (last_lex = LX_WP);
  3208. -         default:
  3209. -             *bp++ = c;
  3210. -             continue;
  3211. -         }
  3212. - #endif
  3213.   
  3214.       if (c == '(')
  3215.       for (*bp++ = c, i = 0;;)
  3216. --- 806,811 ----
  3217. *** ../mh-6.7-dist/conf/config/config.c    Fri Dec 14 13:23:47 1990
  3218. --- conf/config/config.c    Fri Jan 24 17:10:25 1992
  3219. ***************
  3220. *** 1,4 ****
  3221. --- 1,7 ----
  3222.   /* config.c - master MH configuration file */
  3223. + #ifndef    lint
  3224. + static char ident[] = "@(#)$Id: config.c,v 1.5 1992/01/24 00:35:28 jromine Exp $";
  3225. + #endif    lint
  3226.   
  3227.   /* @(MHWARNING) */
  3228.   
  3229. ***************
  3230. *** 19,24 ****
  3231. --- 22,28 ----
  3232.   #define etcpath(file) "@(MHETCPATH)/file"
  3233.   #endif
  3234.   
  3235. + static char Config[] = "@(#)Config: @(MHCONFIGFILE)";
  3236.   
  3237.   @(MHCONFIG)
  3238.   
  3239. *** ../mh-6.7-dist/conf/config/mts.c    Fri Dec 14 13:23:48 1990
  3240. --- conf/config/mts.c    Thu Feb 14 15:18:22 1991
  3241. ***************
  3242. *** 1,6 ****
  3243.   /* mts.c - definitions for the mail transport system */
  3244.   #ifndef    lint
  3245. ! static char ident[] = "@(#)$Id: mts.c,v 2.6 90/11/05 12:06:39 mh Exp $";
  3246.   #endif    lint
  3247.   
  3248.   /* LINTLIBRARY */
  3249. --- 1,6 ----
  3250.   /* mts.c - definitions for the mail transport system */
  3251.   #ifndef    lint
  3252. ! static char ident[] = "@(#)$Id: mts.c,v 2.7 91/02/14 15:17:56 mh Exp $";
  3253.   #endif    lint
  3254.   
  3255.   /* LINTLIBRARY */
  3256. ***************
  3257. *** 477,487 ****
  3258.       return username;
  3259.       }
  3260.   
  3261.       if (MMailids) {
  3262. -     np = pw -> pw_gecos;
  3263. -     for (cp = fullname; *np && *np != '<'; *cp++ = *np++)
  3264. -         continue;
  3265. -     *cp = NULL;
  3266.       if (*np)
  3267.           np++;
  3268.       for (cp = username; *np && *np != '>'; *cp++ = *np++)
  3269. --- 477,487 ----
  3270.       return username;
  3271.       }
  3272.   
  3273. +     np = pw -> pw_gecos;
  3274. +     for (cp = fullname; *np && *np != (MMailids ? '<' : ','); *cp++ = *np++)
  3275. +     continue;
  3276. +     *cp = NULL;
  3277.       if (MMailids) {
  3278.       if (*np)
  3279.           np++;
  3280.       for (cp = username; *np && *np != '>'; *cp++ = *np++)
  3281. ***************
  3282. *** 488,502 ****
  3283.           continue;
  3284.       *cp = NULL;
  3285.       }
  3286. !     if (MMailids == 0 || *np == NULL) {
  3287.       (void) strcpy (username, pw -> pw_name);
  3288. !     fullname[0] = NULL;
  3289. !     }
  3290.       if ((cp = getenv ("SIGNATURE")) && *cp)
  3291.       (void) strcpy (fullname, cp);
  3292.       if (index(fullname, '.')) {        /*  quote any .'s */
  3293.         char tmp[BUFSIZ];
  3294. !       sprintf (tmp, "\"%s\"", fullname);
  3295.         strcpy (fullname, tmp);
  3296.       }
  3297.   
  3298. --- 488,501 ----
  3299.           continue;
  3300.       *cp = NULL;
  3301.       }
  3302. !     if (MMailids == 0 || *np == NULL)
  3303.       (void) strcpy (username, pw -> pw_name);
  3304.       if ((cp = getenv ("SIGNATURE")) && *cp)
  3305.       (void) strcpy (fullname, cp);
  3306.       if (index(fullname, '.')) {        /*  quote any .'s */
  3307.         char tmp[BUFSIZ];
  3308. !       sprintf (tmp, "\"%s\"", fullname);/* should quote "'s too */
  3309.         strcpy (fullname, tmp);
  3310.       }
  3311.   
  3312. *** ../mh-6.7-dist/conf/doc/MH.rf    Wed Jan 29 17:00:07 1992
  3313. --- conf/doc/MH.rf    Wed Jan 29 14:51:23 1992
  3314. ***************
  3315. *** 1,3 ****
  3316.   .\"    @(MHWARNING)
  3317. ! .\" @(#)$Id: MH.rf,v 1.15 91/01/25 15:49:34 mh Exp $
  3318.   .po +.75i
  3319. --- 1,3 ----
  3320.   .\"    @(MHWARNING)
  3321. ! .\" @(#)$Id: MH.rf,v 1.15 1991/01/25 15:49:34 mh Exp jromine $
  3322.   .po +.75i
  3323. ***************
  3324. *** 1069,1070 ****
  3325. --- 1069,1071 ----
  3326.   .so dist.me
  3327. + .so fmtdump.me
  3328.   .so folder.me
  3329. *** ../mh-6.7-dist/conf/doc/mh-alias.rf    Fri Dec 14 13:23:55 1990
  3330. --- conf/doc/mh-alias.rf    Thu Jan 30 11:05:17 1992
  3331. ***************
  3332. *** 1,3 ****
  3333.   .\"    @(MHWARNING)
  3334. ! .\" @(#)$Id: mh-alias.rf,v 1.7 90/04/05 15:10:15 sources Exp $
  3335.   .SC MH\-ALIAS 5
  3336. --- 1,3 ----
  3337.   .\"    @(MHWARNING)
  3338. ! .\" @(#)$Id: mh-alias.rf,v 1.8 1992/01/30 19:05:13 jromine Exp $
  3339.   .SC MH\-ALIAS 5
  3340. ***************
  3341. *** 119,120 ****
  3342. --- 119,121 ----
  3343.   sgroup: fred, fear, freida
  3344. + b-people: Blind List: bill, betty;
  3345.   fred: frated@UCI
  3346. ***************
  3347. *** 134,135 ****
  3348. --- 135,140 ----
  3349.   the three names \*(lqfrated@UCI\*(rq, \*(rqfear\*(rq, and \*(rqfreida\*(rq.
  3350. + The alias \*(lqb-people\*(rq is a blind list which includes the
  3351. + addresses \*(lqbill\*(rq and \*(lqbetty\*(rq; the message
  3352. + will be delieved to those addresses, but the
  3353. + message header will  show only \*(lqBlind List: ;\*(rq (not the addresses).
  3354.   Next, the definition of \*(lqUNIX\-committee\*(rq is given by reading
  3355. *** ../mh-6.7-dist/conf/doc/mh-chart.rf    Wed Jan 29 17:00:09 1992
  3356. --- conf/doc/mh-chart.rf    Wed Jan 29 14:50:54 1992
  3357. ***************
  3358. *** 1,3 ****
  3359.   .\"    @(MHWARNING)
  3360. ! .\" @(#)$Id: mh-chart.rf,v 2.10 91/01/07 11:13:54 mh Exp $
  3361.   .if '\*(ZZ'-man' \{\
  3362. --- 1,3 ----
  3363.   .\"    @(MHWARNING)
  3364. ! .\" @(#)$Id: mh-chart.rf,v 2.11 1992/01/29 22:50:50 jromine Exp $
  3365.   .if '\*(ZZ'-man' \{\
  3366. ***************
  3367. *** 118,119 ****
  3368. --- 118,124 ----
  3369.   \%[\-help]
  3370. + .ti .5i
  3371. + .ne 3
  3372. + fmtdump
  3373. + \%[filename]
  3374.   
  3375. *** ../mh-6.7-dist/conf/doc/mh-format.rf    Wed Jan 29 17:00:10 1992
  3376. --- conf/doc/mh-format.rf    Wed Jan 29 14:57:07 1992
  3377. ***************
  3378. *** 1,3 ****
  3379.   .\"    @(MHWARNING)
  3380. ! .\" @(#)$Id: mh-format.rf,v 1.29 91/01/11 09:17:35 mh Exp $
  3381.   .SC MH\-FORMAT 5
  3382. --- 1,3 ----
  3383.   .\"    @(MHWARNING)
  3384. ! .\" @(#)$Id: mh-format.rf,v 1.30 1992/01/29 22:55:31 jromine Exp $
  3385.   .SC MH\-FORMAT 5
  3386. ***************
  3387. *** 203,204 ****
  3388. --- 203,205 ----
  3389.   lit     literal    string    Set \fIstr\fR to \fIarg\fR
  3390. + getenv     literal    string    Set \fIstr\fR to environment value of \fIarg\fR
  3391.   .\" dat    literal    int    ?
  3392. *** ../mh-6.7-dist/conf/doc/mh-sequence.rf    Wed Jan 29 17:00:11 1992
  3393. --- conf/doc/mh-sequence.rf    Wed Jan 29 15:43:10 1992
  3394. ***************
  3395. *** 1,3 ****
  3396.   .\"    @(MHWARNING)
  3397. ! .\" @(#)$Id: mh-sequence.rf,v 1.9 91/01/09 11:34:34 mh Exp $
  3398.   .SC MH\-SEQUENCE 5
  3399. --- 1,3 ----
  3400.   .\"    @(MHWARNING)
  3401. ! .\" @(#)$Id: mh-sequence.rf,v 1.9 1991/01/09 11:34:34 mh Exp jromine $
  3402.   .SC MH\-SEQUENCE 5
  3403. ***************
  3404. *** 60,62 ****
  3405.   In commands which accept a `msgs' argument, the default is either
  3406. ! \*(lqcur\*(rq or \*(lqall\*(rq, depending on which makes more sense.
  3407.   Repeated specifications of the same message have the same effect as
  3408. --- 60,63 ----
  3409.   In commands which accept a `msgs' argument, the default is either
  3410. ! \*(lqcur\*(rq or \*(lqall\*(rq, depending on which makes more sense
  3411. ! for each command (see the individual man pages for details).
  3412.   Repeated specifications of the same message have the same effect as
  3413. *** ../mh-6.7-dist/conf/doc/refile.rf    Wed Jan 29 17:00:14 1992
  3414. --- conf/doc/refile.rf    Wed Jan 29 15:51:18 1992
  3415. ***************
  3416. *** 1,3 ****
  3417.   .\"    @(MHWARNING)
  3418. ! .\" @(#)$Id: refile.rf,v 1.8 91/01/14 16:43:06 mh Exp $
  3419.   .SC REFILE 1
  3420. --- 1,3 ----
  3421.   .\"    @(MHWARNING)
  3422. ! .\" @(#)$Id: refile.rf,v 1.8 1991/01/14 16:43:06 mh Exp $
  3423.   .SC REFILE 1
  3424. *** ../mh-6.7-dist/conf/doc/scan.rf    Wed Jan 29 17:00:15 1992
  3425. --- conf/doc/scan.rf    Wed Jan 29 14:56:25 1992
  3426. ***************
  3427. *** 1,3 ****
  3428.   .\"    @(MHWARNING)
  3429. ! .\" @(#)$Id: scan.rf,v 1.9 91/01/07 11:13:47 mh Exp $
  3430.   .SC SCAN 1
  3431. --- 1,3 ----
  3432.   .\"    @(MHWARNING)
  3433. ! .\" @(#)$Id: scan.rf,v 1.10 1992/01/29 22:56:18 jromine Exp $
  3434.   .SC SCAN 1
  3435. ***************
  3436. *** 87,89 ****
  3437.   In addition to the standard \fImh\-format\fR\0(5) escapes,
  3438. ! \fIscan\fR also recognizes the following additional \fIcomponent\fR escape:
  3439.   .sp 1
  3440. --- 87,89 ----
  3441.   In addition to the standard \fImh\-format\fR\0(5) escapes,
  3442. ! \fIscan\fR also recognizes the following additional \fIcomponent\fR escapes:
  3443.   .sp 1
  3444. ***************
  3445. *** 93,94 ****
  3446. --- 93,95 ----
  3447.   body    string    the (compressed) first part of the body
  3448. + folder    string    the name of the current folder
  3449.   .re
  3450. *** /dev/null    Thu Jan 30 13:49:21 1992
  3451. --- conf/examples/ncr-sys5.4.2    Tue Aug  6 10:35:06 1991
  3452. ***************
  3453. *** 0 ****
  3454. --- 1,32 ----
  3455. + # an NCR system: Unix System V Release 4.0.2.0 (WINS)
  3456. + # running MMDF2 with SMTP posting
  3457. + #
  3458. + # Apparently, there are two compilation environments: 4.2BSD and SYS5.
  3459. + # To use the socket() syscall, you evidently need the 4.2BSD environment.
  3460. + # This means that you must use /usr/ucb/cc to compile the system.
  3461. + #
  3462. + # uip/vmh.c still won't compile because of loader problems with the
  3463. + # curses & termlib libraries.  NCR should fix their loader not to try to
  3464. + # search additional libraries for modules that have already been found.
  3465. + #
  3466. + bin     /usr/local
  3467. + etc     /usr/local/lib/mh
  3468. + mail    .mail
  3469. + manuals gen
  3470. + chown   /usr/bin/chown
  3471. + mts     mmdf2/smtp
  3472. + mf      off
  3473. + bboards off
  3474. + bbdelivery off
  3475. + cc      /usr/ucb/cc
  3476. + oldload none
  3477. + ldoptlibs -lucb
  3478. + curses  -ltermlib -lcurses
  3479. + ranlib  off
  3480. + sprintf char *
  3481. + options ncr
  3482. + options BSD42
  3483. + options LOCKF
  3484. + options MORE='"/usr/bin/more"'
  3485. + options TZNAME
  3486. + options TYPESIG=void
  3487. *** /dev/null    Thu Jan 30 13:49:21 1992
  3488. --- conf/examples/uci.sequent    Thu Jan 30 13:05:24 1992
  3489. ***************
  3490. *** 0 ****
  3491. --- 1,38 ----
  3492. + # uci.sun - for a Sequent running Dynix 3.0.17
  3493. + bin    /usr/local/mh-6.7.2
  3494. + bbhome    /usr/bboards
  3495. + etc    /usr/local/lib/mh-6.7.2
  3496. + mail    /usr/spool/mail
  3497. + mailgroup    off
  3498. + mandir    /usr/man
  3499. + manuals    local
  3500. + chown    /etc/chown
  3501. + editor    prompter
  3502. + remove    mv -f
  3503. + mts    mmdf2/smtp
  3504. + bboards    nntp
  3505. + bbdelivery on
  3506. + mf    off
  3507. + pop    on
  3508. + options    BIND
  3509. + options    BSD42 
  3510. + options    BSD43 
  3511. + #options    DBM
  3512. + #options    LOCKF
  3513. + options    MHE
  3514. + options    MHRC 
  3515. + #options    NFS
  3516. + options    POP2
  3517. + options    RPATHS
  3518. + options    RPOP
  3519. + #options    SUN40 
  3520. + #options    TYPESIG=void
  3521. + options    WHATNOW
  3522. + options UCI
  3523. + #options    ZONEINFO
  3524. + cc    atscc
  3525. + ldoptions -s
  3526. + ldoptlibs -ldbm -lseq
  3527. + curses -lcurses -ltermcap
  3528. + ranlib  on
  3529. + sharedlib off
  3530. *** ../mh-6.7-dist/conf/examples/uci.sun    Wed Jan 29 17:00:16 1992
  3531. --- conf/examples/uci.sun    Tue Jan 28 15:07:56 1992
  3532. ***************
  3533. *** 1,5 ****
  3534.   # uci.sun - for a Sun3 or Sun4 running Sun OS 4.1
  3535. ! bin    /usr/local
  3536.   bbhome    /usr/bboards
  3537. ! etc    /usr/local/lib/mh
  3538.   mail    /usr/spool/mail
  3539. --- 1,5 ----
  3540.   # uci.sun - for a Sun3 or Sun4 running Sun OS 4.1
  3541. ! bin    /usr/local/mh-6.7.2
  3542.   bbhome    /usr/bboards
  3543. ! etc    /usr/local/lib/mh-6.7.2
  3544.   mail    /usr/spool/mail
  3545. ***************
  3546. *** 7,9 ****
  3547.   mandir    /usr/man
  3548. ! manuals    local
  3549.   chown    /etc/chown
  3550. --- 7,10 ----
  3551.   mandir    /usr/man
  3552. ! #manuals    local
  3553. ! manuals        gen
  3554.   chown    /etc/chown
  3555. ***************
  3556. *** 20,22 ****
  3557.   options    DBM
  3558. ! options    LOCKF
  3559.   options    MHE
  3560. --- 21,23 ----
  3561.   options    DBM
  3562. ! #options    LOCKF
  3563.   options    MHE
  3564. ***************
  3565. *** 27,30 ****
  3566.   options    RPOP
  3567. ! options    SUN40 
  3568.   options    SUNVIBUG
  3569.   options    TYPESIG=void
  3570. --- 28,33 ----
  3571.   options    RPOP
  3572. ! options    SUN40
  3573. ! options    SUN41
  3574.   options    SUNVIBUG
  3575. + options    ATTVIBUG
  3576.   options    TYPESIG=void
  3577. ***************
  3578. *** 33,34 ****
  3579. --- 36,39 ----
  3580.   #options    ZONEINFO
  3581. + # for Sun4s
  3582. + cc    /usr/bs/sunc/cc
  3583.   ldoptions -s
  3584. *** /dev/null    Thu Jan 30 13:49:21 1992
  3585. --- conf/examples/uci.sun.debug    Tue Feb 12 15:57:14 1991
  3586. ***************
  3587. *** 0 ****
  3588. --- 1,41 ----
  3589. + # uci.sun - for a Sun3 or Sun4 running Sun OS 4.1
  3590. + bin    /usr/local
  3591. + bbhome    /usr/bboards
  3592. + etc    /usr/local/lib/mh
  3593. + mail    /usr/spool/mail
  3594. + mailgroup    off
  3595. + mandir    /usr/man
  3596. + manuals    local
  3597. + chown    /etc/chown
  3598. + editor    prompter
  3599. + remove    mv -f
  3600. + mts    mmdf2/smtp
  3601. + bboards    nntp
  3602. + bbdelivery off
  3603. + mf    off
  3604. + pop    on
  3605. + options    BIND
  3606. + options    BSD42 
  3607. + options    BSD43 
  3608. + options    DBM
  3609. + options    LOCKF
  3610. + options    MHE
  3611. + options    MHRC 
  3612. + options    NFS
  3613. + options    POP2
  3614. + options    RPATHS
  3615. + options    RPOP
  3616. + options    SUN40 
  3617. + options    SUNVIBUG
  3618. + options    TYPESIG=void
  3619. + options    WHATNOW
  3620. + options UCI
  3621. + #options    ZONEINFO
  3622. + ccoptions -g
  3623. + #ldoptions -s
  3624. + ldoptlibs -ldbm
  3625. + curses -lcurses -ltermcap
  3626. + ranlib  on
  3627. + #sharedlib on
  3628. + sharedlib off
  3629. + slibdir    /usr/local/lib
  3630. *** ../mh-6.7-dist/conf/makefiles/doc    Wed Jan 29 17:00:17 1992
  3631. --- conf/makefiles/doc    Wed Jan 29 15:33:36 1992
  3632. ***************
  3633. *** 4,6 ****
  3634.   #    @(MHWARNING)
  3635. ! # @(#)$Id: doc,v 2.12 91/01/25 15:49:10 mh Exp $
  3636.   ##############################################################################
  3637. --- 4,6 ----
  3638.   #    @(MHWARNING)
  3639. ! # @(#)$Id: doc,v 2.13 1992/01/29 23:33:31 jromine Exp $
  3640.   ##############################################################################
  3641. ***************
  3642. *** 84,86 ****
  3643.   
  3644. ! .me.doc:;    nroff -me $< > $@
  3645.   
  3646. --- 84,86 ----
  3647.   
  3648. ! .me.doc:;    nroff -Tlpr -me $< > $@
  3649.   
  3650. *** ../mh-6.7-dist/conf/makefiles/sbr    Fri Dec 14 13:24:09 1990
  3651. --- conf/makefiles/sbr    Thu Jan 30 08:36:20 1992
  3652. ***************
  3653. *** 4,6 ****
  3654.   #    @(MHWARNING)
  3655. ! # @(#)$Id: sbr,v 2.9 90/04/08 22:00:14 sources Exp $
  3656.   ##############################################################################
  3657. --- 4,6 ----
  3658.   #    @(MHWARNING)
  3659. ! # @(#)$Id: sbr,v 2.12 1992/01/30 16:36:16 jromine Exp $
  3660.   ##############################################################################
  3661. ***************
  3662. *** 22,24 ****
  3663.   @BEGIN: STDLIB
  3664. ! LIB    =    libmh.a
  3665.   @END: STDLIB
  3666. --- 22,24 ----
  3667.   @BEGIN: STDLIB
  3668. ! LIBS    =    libmh.a
  3669.   @END: STDLIB
  3670. ***************
  3671. *** 25,27 ****
  3672.   @BEGIN: SHAREDLIB
  3673. ! LIB     =    libmh.so
  3674.   SLIBDIR =    @(SLIBDIR)
  3675. --- 25,28 ----
  3676.   @BEGIN: SHAREDLIB
  3677. ! LIBS     =    shared libmh.a libmh.so libmh.sa
  3678. ! SLIBVER    =    @(SLIBVER)
  3679.   SLIBDIR =    @(SLIBDIR)
  3680. ***************
  3681. *** 44,47 ****
  3682.           showfile.c smatch.c sprintb.c ssequal.c strindex.c trimcpy.c \
  3683. !         uleq.c uprf.c vfgets.c
  3684.   
  3685.   OFILES    =    add.o adios.o admonish.o addrsbr.o advertise.o advise.o \
  3686. --- 45,49 ----
  3687.           showfile.c smatch.c sprintb.c ssequal.c strindex.c trimcpy.c \
  3688. !         uleq.c uprf.c vfgets.c formatdef.c m_msgdef.c
  3689.   
  3690.   OFILES    =    add.o adios.o admonish.o addrsbr.o advertise.o advise.o \
  3691. ***************
  3692. *** 59,62 ****
  3693.           showfile.o smatch.o sprintb.o ssequal.o strindex.o trimcpy.o \
  3694. !         uleq.o uprf.o vfgets.o
  3695.   
  3696.   
  3697. --- 61,67 ----
  3698.           showfile.o smatch.o sprintb.o ssequal.o strindex.o trimcpy.o \
  3699. !         uleq.o uprf.o vfgets.o formatdef.o m_msgdef.o
  3700.   
  3701. + @BEGIN: SHAREDLIB
  3702. + ODEFS    =    formatdef.o m_msgdef.o
  3703. + @END: SHAREDLIB
  3704.   
  3705. ***************
  3706. *** 67,73 ****
  3707.   
  3708.   @BEGIN: SHAREDLIB
  3709. ! .c.o:;        $(CC) $(CFLAGS) -c $*.c -pic
  3710.   @END: SHAREDLIB
  3711. ! @BEGIN: STDLIB
  3712. ! .c.o:;        $(CC) $(CFLAGS) -c $*.c
  3713.   @BEGIN: NEWLOAD
  3714. --- 72,81 ----
  3715.   
  3716. + .c.o:
  3717.   @BEGIN: SHAREDLIB
  3718. !         -rm -f $@ shared/$@
  3719. !         $(CC) $(CFLAGS) -c -pic $*.c
  3720. !         mv $@ shared/$@
  3721. !         -rm -f $@
  3722.   @END: SHAREDLIB
  3723. !         $(CC) $(CFLAGS) -c $*.c
  3724.   @BEGIN: NEWLOAD
  3725. ***************
  3726. *** 79,83 ****
  3727.   @END: OLDLOAD
  3728. - @END: STDLIB
  3729.   
  3730.   @END: OPTIM
  3731. --- 87,89 ----
  3732. ***************
  3733. *** 87,93 ****
  3734.   
  3735. ! all:        version $(LIB)
  3736.   
  3737. ! $(LIB):     $(OFILES)
  3738.           -mv $@ z$@
  3739. - @BEGIN: STDLIB
  3740.   @BEGIN: RANLIB
  3741. --- 93,98 ----
  3742.   
  3743. ! all:        $(LIBS)
  3744.   
  3745. ! libmh.a:     $(OFILES)
  3746.           -mv $@ z$@
  3747.   @BEGIN: RANLIB
  3748. ***************
  3749. *** 100,106 ****
  3750.           -@echo "MH library built normally"
  3751. ! @END: STDLIB
  3752.   @BEGIN: SHAREDLIB
  3753. !         ld -o $@ $(OFILES)
  3754. !         -@rm -f $@.`cat version`
  3755. !         ln $@ $@.`cat version`
  3756.           -@ls -l $@*
  3757. --- 105,113 ----
  3758.           -@echo "MH library built normally"
  3759.   @BEGIN: SHAREDLIB
  3760. ! libmh.so:    $(OFILES)
  3761. !         -mv -f $@ z$@
  3762. !         (cd shared; ld -o ../$@ -assert pure-text $(OFILES))
  3763. !         -@rm -f $@.$(SLIBVER)
  3764. !         ln $@ $@.$(SLIBVER)
  3765.           -@ls -l $@*
  3766. ***************
  3767. *** 107,113 ****
  3768.           -@echo "MH shared library built normally"
  3769. - @END: SHAREDLIB
  3770.   
  3771. ! version:    $(CFILES)
  3772. !         @/bin/sh version.sh @(MHRELEASE)
  3773.   
  3774.   
  3775. --- 114,131 ----
  3776.           -@echo "MH shared library built normally"
  3777.   
  3778. ! libmh.sa:    $(ODEFS)
  3779. !         -mv $@ z$@
  3780. ! @BEGIN: RANLIB
  3781. !         ar r $@ $(ODEFS); ranlib $@
  3782. ! @END: RANLIB
  3783. ! @BEGIN: LORDER
  3784. !         ar r $@ `lorder $(ODEFS) | tsort`
  3785. ! @END: LORDER
  3786. !         -@rm -f $@.$(SLIBVER)
  3787. !         ln $@ $@.$(SLIBVER)
  3788. !         -@ls -l $@*
  3789. !         -@echo "MH data interface description built normally"
  3790.   
  3791. + shared:;    @if [ -d shared ]; then exit 0; else set -x; mkdir shared; fi
  3792. + @END: SHAREDLIB
  3793.   
  3794. ***************
  3795. *** 118,126 ****
  3796.   @BEGIN: SHAREDLIB
  3797. ! inst-lib:    $(LIB)
  3798. !         -rm -f $(SLIBDIR)/$(LIB)
  3799. !         cp $(LIB) $(SLIBDIR)/$(LIB).`cat version`
  3800. !         -@chmod $(PGMPROT) $(SLIBDIR)/$(LIB).`cat version`
  3801. !         -@ls -l $(SLIBDIR)/$(LIB)*
  3802. !         -@echo "Library installed normally"
  3803.           -@echo ""
  3804.   @END: SHAREDLIB
  3805. --- 136,150 ----
  3806.   @BEGIN: SHAREDLIB
  3807. ! inst-lib:    libmh.so libmh.sa
  3808. !         -rm -f $(SLIBDIR)/libmh.so.$(SLIBVER)
  3809. !         cp libmh.so.$(SLIBVER) $(SLIBDIR)/libmh.so.$(SLIBVER)
  3810. !         -@chmod $(PGMPROT) $(SLIBDIR)/libmh.so.$(SLIBVER)
  3811. !         -@ls -l $(SLIBDIR)/libmh.so.*
  3812. !         -@echo "Shared library installed normally"
  3813.           -@echo ""
  3814. +         -rm -f $(SLIBDIR)/libmh.sa.$(SLIBVER)
  3815. +         cp libmh.sa.$(SLIBVER) $(SLIBDIR)/libmh.sa.$(SLIBVER)
  3816. +         -@chmod $(PGMPROT) $(SLIBDIR)/libmh.sa.$(SLIBVER)
  3817. +         -@ls -l $(SLIBDIR)/libmh.sa.*
  3818. +         -@echo "Data interface description installed normally"
  3819. +         -@echo ""
  3820.   @END: SHAREDLIB
  3821. ***************
  3822. *** 134,135 ****
  3823. --- 158,160 ----
  3824.           -rm -f Makefile
  3825. +         -rm -rf shared
  3826.   
  3827. ***************
  3828. *** 140,143 ****
  3829.           -rm -f *.o libmh.*
  3830.   
  3831. ! unclean:;    -rm -f z$(LIB) _* :* core eddep makedep
  3832.   
  3833. --- 165,171 ----
  3834.           -rm -f *.o libmh.*
  3835. + @BEGIN: SHAREDLIB
  3836. +         -rm -f shared/*.o
  3837. + @END: SHAREDLIB
  3838.   
  3839. ! unclean:;    -rm -f zlibmh.* _* :* core eddep makedep
  3840.   
  3841. *** ../mh-6.7-dist/conf/makefiles/uip    Wed Jan 29 17:00:18 1992
  3842. --- conf/makefiles/uip    Fri Jan 24 15:19:02 1992
  3843. ***************
  3844. *** 4,6 ****
  3845.   #    @(MHWARNING)
  3846. ! # @(#)$Id: uip,v 2.12 91/01/25 15:50:18 mh Exp $
  3847.   ##############################################################################
  3848. --- 4,6 ----
  3849.   #    @(MHWARNING)
  3850. ! # @(#)$Id: uip,v 2.14 1992/01/24 23:18:46 jromine Exp $
  3851.   ##############################################################################
  3852. ***************
  3853. *** 139,141 ****
  3854.   MISC    =    ap conflict dp install-mh mhl post rcvdist rcvpack rcvstore \
  3855. !         rcvtty fmtdump \
  3856.   @BEGIN: SENDMTS
  3857. --- 139,141 ----
  3858.   MISC    =    ap conflict dp install-mh mhl post rcvdist rcvpack rcvstore \
  3859. !         rcvtty fmtdump sendmail \
  3860.   @BEGIN: SENDMTS
  3861. ***************
  3862. *** 153,155 ****
  3863.           inst-post inst-rcvdist inst-rcvpack inst-rcvstore inst-rcvtty \
  3864. !         inst-fmtdump $(IMTSMISC) \
  3865.   @BEGIN: SENDMTS
  3866. --- 153,155 ----
  3867.           inst-post inst-rcvdist inst-rcvpack inst-rcvstore inst-rcvtty \
  3868. !         inst-fmtdump inst-sendmail $(IMTSMISC) \
  3869.   @BEGIN: SENDMTS
  3870. ***************
  3871. *** 164,166 ****
  3872.   LMISC    =    l-ap l-conflict l-dp l-install-mh l-mhl l-post l-rcvdist \
  3873. !         l-rcvpack l-rcvstore l-rcvtty l-fmtdump \
  3874.           $(LMTSMISC) $(LBBMISC) \
  3875. --- 164,166 ----
  3876.   LMISC    =    l-ap l-conflict l-dp l-install-mh l-mhl l-post l-rcvdist \
  3877. !         l-rcvpack l-rcvstore l-rcvtty l-fmtdump l-sendmail \
  3878.           $(LMTSMISC) $(LBBMISC) \
  3879. ***************
  3880. *** 176,178 ****
  3881.   TMISC    =    xap xconflict xdp xinstall-mh xmhl xpost xrcvdist xrcvpack \
  3882. !         xrcvstore xrcvtty xfmtdump \
  3883.           $(TMTSMISC) $(TBBMISC) $(TPOPMISC) \
  3884. --- 176,178 ----
  3885.   TMISC    =    xap xconflict xdp xinstall-mh xmhl xpost xrcvdist xrcvpack \
  3886. !         xrcvstore xrcvtty xfmtdump xsendmail \
  3887.           $(TMTSMISC) $(TBBMISC) $(TPOPMISC) \
  3888. ***************
  3889. *** 1088,1089 ****
  3890. --- 1088,1107 ----
  3891.   @END: SENDMTS
  3892. + inst-sendmail:    $(ETCDIR)/sendmail
  3893. + $(ETCDIR)/sendmail:    xsendmail
  3894. +         -$(REMOVE) $@ zsendmail
  3895. +         cp xsendmail $@
  3896. +         -@chmod $(PGMPROT) $@
  3897. +         -@ls -l $@
  3898. +         -@echo "Don't forget to: ln -s /usr/lib/sendmail $@"
  3899. +         -@echo ""
  3900. +         
  3901. + sendmail:        xsendmail
  3902. + xsendmail:        sendmail.o $(LIBES)
  3903. +         $(LD) $(LDFLAGS) -o $@ sendmail.o $(LDLIBS)
  3904. + l-sendmail:;        $(LINT) $(LFLAGS) sendmail.c $(LLIBS)
  3905.   
  3906. *** ../mh-6.7-dist/conf/makefiles/zotnet/bboards    Fri Dec 14 13:24:10 1990
  3907. --- conf/makefiles/zotnet/bboards    Wed Jan 29 15:06:46 1992
  3908. ***************
  3909. *** 4,6 ****
  3910.   #    @(MHWARNING)
  3911. ! # @(#)$Id: bboards,v 1.6 90/04/05 15:16:32 sources Exp $
  3912.   ##############################################################################
  3913. --- 4,6 ----
  3914.   #    @(MHWARNING)
  3915. ! # @(#)$Id: bboards,v 1.6 1990/04/05 15:16:32 sources Exp $
  3916.   ##############################################################################
  3917. *** ../mh-6.7-dist/conf/makefiles/zotnet/mf    Fri Dec 14 13:24:10 1990
  3918. --- conf/makefiles/zotnet/mf    Wed Jan 29 15:10:16 1992
  3919. ***************
  3920. *** 4,6 ****
  3921.   #    @(MHWARNING)
  3922. ! # @(#)$Id: mf,v 1.5 90/04/05 15:16:45 sources Exp $
  3923.   ##############################################################################
  3924. --- 4,6 ----
  3925.   #    @(MHWARNING)
  3926. ! # @(#)$Id: mf,v 1.6 1992/01/29 23:10:03 jromine Exp $
  3927.   ##############################################################################
  3928. ***************
  3929. *** 36,37 ****
  3930. --- 36,38 ----
  3931.   
  3932. + .c:;            echo $@
  3933.   
  3934. *** ../mh-6.7-dist/conf/makefiles/zotnet/mts    Fri Dec 14 13:24:10 1990
  3935. --- conf/makefiles/zotnet/mts    Wed Jan 29 15:10:19 1992
  3936. ***************
  3937. *** 4,6 ****
  3938.   #    @(MHWARNING)
  3939. ! # @(#)$Id: mts,v 1.6 90/04/05 15:16:53 sources Exp $
  3940.   ##############################################################################
  3941. --- 4,6 ----
  3942.   #    @(MHWARNING)
  3943. ! # @(#)$Id: mts,v 1.7 1992/01/29 23:10:03 jromine Exp $
  3944.   ##############################################################################
  3945. ***************
  3946. *** 32,33 ****
  3947. --- 32,34 ----
  3948.   
  3949. + .c:;            echo $@
  3950.   
  3951. *** ../mh-6.7-dist/conf/makefiles/zotnet/tws    Fri Dec 14 13:24:11 1990
  3952. --- conf/makefiles/zotnet/tws    Wed Jan 29 16:31:24 1992
  3953. ***************
  3954. *** 4,6 ****
  3955.   #    @(MHWARNING)
  3956. ! # @(#)$Id: tws,v 1.9 90/04/05 15:16:39 sources Exp $
  3957.   ##############################################################################
  3958. --- 4,6 ----
  3959.   #    @(MHWARNING)
  3960. ! # @(#)$Id: tws,v 1.10 1992/01/30 00:31:18 jromine Exp $
  3961.   ##############################################################################
  3962. ***************
  3963. *** 77,78 ****
  3964. --- 77,85 ----
  3965.   ######################################################################
  3966. + lex:        zap-dtime dtimep.c
  3967. + zap-dtime:;    rm -f dtimep.c
  3968. + ######################################################################
  3969.   # dtime
  3970. ***************
  3971. *** 89,90 ****
  3972. --- 96,98 ----
  3973.   
  3974.   unconfig:    distribution
  3975. ***************
  3976. *** 95,97 ****
  3977.   clean:        unclean
  3978. !         -rm -f dtimep.c *.o date
  3979.   
  3980. --- 103,105 ----
  3981.   clean:        unclean
  3982. !         -rm -f *.o date
  3983.   
  3984.